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{}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM