我正在使用延迟加载的Angular模块开发应用程序。
我有一个简单的问题:
是否可以在加载模块时捕获事件?
例如OnInit。此链接说明了生命周期挂钩,但它仅适用于组件:Lifecycle hooks for components
我找不到任何解释如何挂钩模块的文档。
有人知道如何解决这个问题吗?
由于
答案 0 :(得分:8)
延迟加载模块的构造函数应该这样做
@NgModule({...})
export class MyLazyModule {
constructor(/* service injection here if required */) {
console.log('lazy module loaded');
}
}
答案 1 :(得分:2)
您可以使用两个路由器事件:RouteConfigLoadStart
和RouteConfigLoadEnd
。您也可以使用LoadChildrenCallback
。这些可能不会完全符合您的要求,但仍然可以提供帮助。
您还可以使用以下技巧:
@NgModule({
imports : [BrowserModule, FormsModule, RouterModule, ROUTING],
providers : [
{provide: CustomService, useClass: CustomService},
...
]
})
export class AppModule implements OnInit
{
//force CustomService service creation or inject other app service,
// so use can use it to fire event or do smth.
constructor(handler:CustomService)
{
console.log('handler', handler);
handler.fire('module created');
}
}