问题
I am in the process of developing an application using lazy loaded Angular modules.
I have a simple question:
Is it possible to catch an event when a module is loaded?
For example OnInit. This link explains life cycle hooks but it is only for components: Lifecycle hooks for components
I cant find any documentation that explains how to hook in for modules.
Does someone have an idea of how to solve this?
Thanks
回答1:
The constructor of the lazy loaded module should do that
@NgModule({...})
export class MyLazyModule {
constructor(/* service injection here if required */) {
console.log('lazy module loaded');
}
}
回答2:
There are two router events that you can use: RouteConfigLoadStart
and RouteConfigLoadEnd
. Also you can use LoadChildrenCallback
. These might not do exactly what you want, but still can be helpful.
Also you can use the following trick:
@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');
}
}
来源:https://stackoverflow.com/questions/47094998/angular-2-lifecycle-hooks-for-lazy-loaded-modules