2017-04-08 70 views
0

提供通用記錄器我想使取決於一個模塊B上的模塊A,而是讓用戶通過A.Angular2到導入模塊

既提供一個記錄器換句話說

@NgModule({ 
    imports: [ 
    ModuleB.forRoot(/* use loggerLikeConsole from below */) 
    ], 
    declarations: [ 
    ], 
    exports: [ 
    ] 
}) 
export class ModuleA { 
    static forRoot(loggerLikeConsole: Console): ModuleWithProviders { 
    //... 
    } 
} 

這可以做到嗎?這似乎應該是可能的。也許我錯過了一些簡單的東西。

回答

1

模塊B應該在它的providers:[]聲明中有記錄器服務。然後,記錄器服務將在模塊A導入B時可用。

服務在整個應用程序中共享。因此,是否在子模塊或父模塊中聲明服務並不重要。它將在整個應用程序中可用。在延遲加載模塊的情況下是例外情況,在這種情況下,您應該在延遲加載模塊的providers聲明中添加該服務。

您還可以嘗試angular2-logger,我們可以將其導入到應用程序以進行日誌記錄。

+0

感謝指向angular2-logger的指針! –