我一直在浏览Angular教程,并在浏览HTTP部分https://angular.io/docs/ts/latest/tutorial/toh-pt6.html时注意到在NgModule中声明导入的顺序会对应用程序是否有效产生影响 . 我想知道为什么会这样 .
特别是这有效:
@NgModule({
imports: [
BrowserModule,
FormsModule,
HttpModule,
InMemoryWebApiModule.forRoot(InMemoryDataService),
AppRoutingModule
],
...
})
但以下没有 . 英雄列表没有加载 . 请注意,HttpModule是在InMemoryWebApiModule之后声明的:
@NgModule({
imports: [
BrowserModule,
FormsModule,
InMemoryWebApiModule.forRoot(InMemoryDataService),
HttpModule,
AppRoutingModule
],
...
})
本教程使用的是Angular 2.4.4 . 我注意到了Firefox和IE中的问题 . 我没有在谷歌搜索中发现任何可能表明问题根源的内容 .
3 回答
提供者的顺序很重要,对于导出的组件,指令或管道并不重要,因为冲突会导致错误 .
InMemoryWebApiModule.forRoot(InMemoryDataService),
会覆盖Http
,如果稍后提供HttpModule
,则此oVerriding将呈现为空 . 稍后添加的提供商使用相同的密钥覆盖已注册的提供商 .是的,模块导入顺序就是问题
是 . 如果一个模块依赖另一个模块,则顺序很重要