Angular 2 - Lifecycle hooks for lazy loaded modules

蓝咒 提交于 2019-12-07 05:11:13

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!