我有一个懒加载模块,我尝试添加APP_INITIALIZER但它没有触发。 我的主应用程序与其语法完全相同,可以按预期工作。 懒加载模块会触发APP_INITIALIZER吗?
我有一个懒加载模块,我尝试添加APP_INITIALIZER但它没有触发。 我的主应用程序与其语法完全相同,可以按预期工作。 懒加载模块会触发APP_INITIALIZER吗?
很遗憾,APP_INITIALIZER不会在惰性加载的模块中被调用,因为应用程序已经在此之前初始化。
现在你可以这样做:
您可以简单地利用模块的构造函数,该函数在模块被初始化时立即调用,并由注入器完全处理:
@NgModule({
...
})
export class MyModule {
constructor( <INJECTIONS> ) {
console.log('Module initialized');
}
}
这种方法有两个限制:
未来可能有帮助的内容:
关于引入一个MODULE_INITIALIZER,在模块初始化后调用它的GitHub上正在进行讨论,这将解决这些限制。也许你可以帮助它引起开发者的注意?
从文档中可以得知:
https://angular.io/api/core/APP_INITIALIZER
应用程序初始化时将执行的函数。
该应用程序只会在初始化时被执行一次,从主模块开始 (即启动模块)。
CanLoad
或 CanActivate
,你可以在模块加载之前在守卫中实现你的逻辑,但始终要从守卫 Observable 中返回以在模块初始化逻辑完成后加载此模块。