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
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');
}
}
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');
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With