Angular 2 - 延迟加载模块的生命周期钩子

时间:2017-11-03 11:44:17

标签: javascript angular module components lifecycle

我正在使用延迟加载的Angular模块开发应用程序。

我有一个简单的问题:

是否可以在加载模块时捕获事件?

例如OnInit。此链接说明了生命周期挂钩,但它仅适用于组件:Lifecycle hooks for components

我找不到任何解释如何挂钩模块的文档。

有人知道如何解决这个问题吗?

由于

2 个答案:

答案 0 :(得分:8)

延迟加载模块的构造函数应该这样做

@NgModule({...})
export class MyLazyModule {
  constructor(/* service injection here if required */) {
    console.log('lazy module loaded');
  }
}

答案 1 :(得分:2)

您可以使用两个路由器事件:RouteConfigLoadStartRouteConfigLoadEnd。您也可以使用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');
    }
}