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