Angular APP_INITIALIZER是否在延迟加载的模块中工作

时间:2018-04-11 20:13:56

标签: angular lazy-loading initialization

我有一个延迟加载的模块,我正在尝试添加APP_INITIALIZER但它没有触发。我有与我的主应用程序完全相同的语法,它按预期工作。延迟加载的模块是否会激活APP_INITIALIZER?

2 个答案:

答案 0 :(得分:0)

没有

来自文档 https://angular.io/api/core/APP_INITIALIZER

  

初始化应用程序时将执行的功能

应用程序仅初始化一次,从主模块(自举的模块)开始

答案 1 :(得分:0)

不幸的是,在延迟加载的模块中未调用APP_INITIALIZER,因为该应用程序之前已初始化。

您现在可以做什么:

您可以简单地利用模块的构造函数,该函数的构造函数在初始化后由注入器进行完全处理:

@NgModule({
    ...
})
export class MyModule {
  constructor( <INJECTIONS> ) {
    console.log('Module initialized');
  }
}

此方法有两个限制:

  • 您只能在内部使用同步呼叫
  • 调用构造函数时,模块尚未初始化,因此,例如,您不能动态地向此处定义的组件添加路由(可悲的是,我想在此处执行此操作)

将来有什么帮助:

ongoing discussion on GitHub关于引入MODULE_INITIALIZER的请求,该MODULE_INITIALIZER在模块初始化之后被调用,这将解决这些限制。