我正在阅读有关模块的Angular文档,寻找不鼓励在AppModule中导入SharedModule的行。
我什么都没找到,只是一个GitHub问题,指出最好不要导入它。但是没有任何深入的解释...
https://github.com/tomastrajan/angular-ngrx-material-starter/issues/47
Angular不鼓励在Shared模块中提供服务,我的确同意。但没有别的。
所以我的问题是:
由于我所有的功能模块都是延迟加载的,并且需要导入共享模块,而且我的应用程序组件也需要使用同一共享模块提供的内容,因此将其导入AppModule是一种不好的做法吗?
结果可能是什么?
在此先感谢任何人
只需查看此链接共享模块,将共享模块导入其中是一个不错的做法AppModule
共享模块是关于拥有通用模块,例如如果您拥有form module some module所有模块都需要的模块,而不是在所有模块中导入您可以将其导入shared module并导出相同的模块 - 检查链接以获取进一步说明
对于服务,它可以只注入到一个模块中AppModule-injectable如果已注入根模块,则可以在任何模块中使用服务
@Injectable({
providedIn: 'root'
})
Run Code Online (Sandbox Code Playgroud)
在您的服务顶部使用此装饰器,它会自动将您的服务注入根模块
谢谢 - 快乐编码!!
将导入SharedModule到中的问题AppModule在于,提供程序将在功能模块中注入两次(一次通过SharedModule,一次通过AppModule),这将导致服务不像预期的那样单身。
实现此目标的常见模式不是直接在@NgModule声明上公开提供程序,而是在静态forRoot函数中(名称不是强制性的,这是一个约定),如下所示:
export class SharedModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: SharedModule,
providers: [
...
]
};
}
}
Run Code Online (Sandbox Code Playgroud)
导入当SharedModule进入AppModule,使用SharedModule.forRoot(),当你导入一个功能模块中只导入为SharedModule
| 归档时间: |
|
| 查看次数: |
1902 次 |
| 最近记录: |