Angular

forRoot的作用

爲了保證service的全局唯一性,防止惰性加載的時候重新生成service實例

 

示例:

angular裏forRoot的作用

模塊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{}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章