在AppModule中导入的共享模块

凯乌斯

我正在阅读有关模块的Angular文档,寻找不鼓励在AppModule中导入SharedModule的行。

我什么都没找到,只有一个GitHub问题指出最好不要导入它。但是没有任何深入的解释...

https://github.com/tomastrajan/angular-ngrx-material-starter/issues/47

Angular不鼓励在Shared模块中提供服务,我的确同意。但没有别的。

所以我的问题是:

由于我的所有功能模块都是延迟加载的,并且需要导入共享模块,而且我的应用程序组件也需要使用同一共享模块提供的内容,因此将其导入AppModule是一种不好的做法吗?

结果可能是什么?

在此先感谢任何人

葛瑞克

将aSharedModule导入的问题AppModule在于,提供程序将在功能模块中注入两次(一次通过SharedModule,一次通过AppModule),这将导致服务不像预期的那样单身。

实现此目标的常见模式不是直接在@NgModule声明上公开提供程序,而是在静态forRoot函数中(名称不是强制性的,这是一个约定),如下所示:

export class SharedModule {
  static forRoot(): ModuleWithProviders {
    return {
      ngModule: SharedModule,
      providers: [
         ...
      ]
    };
  }
}

导入当SharedModule进入AppModule,使用SharedModule.forRoot(),当你导入一个功能模块中只导入为SharedModule

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章