模塊A是這樣定義的
@NgModule({
providers: [AService],
declarations: [ TitleComponent ],
exports: [ TitleComponent ],
})
export class A {}
如果有惰性模塊lazyModule導入模塊A,那么會生成子注入器將AService重新生成
這時如果想將AService變成全局唯一的,那么在lazyModule導入的時候就不要導入providers而只導入TitleComponent
forRoot這時就有用武之地了
改寫A
@NgModule({ providers: [], declarations: [ TitleComponent ], exports: [ TitleComponent ], }) export class A { static forRoot() { return {ngModule: A, providers: [AService]}; } }
在appModule中使用A.forRoot導入A模塊
@NgModule({
imports: [A.forRoot()]
})
export class AppModule {}
在lazyModule中正常導入A模塊
@NgModule({
imports: [A]
})
export class LazyModule{}