2017-04-08 71 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的指针! –