首页 文章

为什么NgModule进口的顺序很重要?

提问于
浏览
11

我一直在浏览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 回答

  • 7

    提供者的顺序很重要,对于导出的组件,指令或管道并不重要,因为冲突会导致错误 .

    InMemoryWebApiModule.forRoot(InMemoryDataService), 会覆盖 Http ,如果稍后提供 HttpModule ,则此oVerriding将呈现为空 . 稍后添加的提供商使用相同的密钥覆盖已注册的提供商 .

  • 2

    是的,模块导入顺序就是问题

  • 2

    是 . 如果一个模块依赖另一个模块,则顺序很重要

相关问题