我已经学习了Angular教程,并且在阅读http部分https://angular.io/docs/ts/latest/tutorial/toh-pt6.html时注意到,ngmodule中声明导入的顺序会影响应用程序是否工作。我想知道为什么。
尤其是这项工作:
@ ngMead({)
进口:
浏览器模块,
模板模块
HttpModule
inMemoryWebPimodule.forroot(inMemoryDataService)中,
认可模块
,
…
})
但下面没有。英雄列表不会加载。注意,httpmodule是在inMemoryWebAPI模块之后声明的:
@ ngMead({)
进口:
浏览器模块,
模板模块
inMemoryWebPimodule.forroot(inMemoryDataService)中,
HttpModule
认可模块
,
…
})
本教程使用的是Angular2.4.4。我注意到Firefox和IE都有这个问题。我在谷歌搜索中没有发现任何可以指出问题根源的东西。
最佳答案
对于导出的组件、指令或管道,提供程序的顺序很重要,因为冲突会导致错误。InMemoryWebApiModule.forRoot(InMemoryDataService),
覆盖Http
并且如果稍后提供了HttpModule
,则此覆盖将呈现为无效。
稍后添加的提供程序将重写已注册的具有相同密钥的提供程序。