我在角度2中有一个服务,它以当前形式只侦听来自自定义调度程序的事件,对它们起作用并通过调度程序发送其他事件。
因此,服务不会注入任何地方,也不是我想要的(稍后会将其注入延迟加载模块的组件中)。
服务位于共享模块中,我将其导出为:
export class SharedModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: SharedModule,
providers: [Dispatcher, AccountService]
};
}
}
如何确保在SharedModule加载时实例化它?
答案 0 :(得分:3)
您可以使用NgModule的构造函数。在此示例中,当我懒惰加载此模块时,我使用它来为UserService
实例化replaceReducers()
和ngrx/store
:
@NgModule({
declarations: [],
imports: [
CommonModule,
...
],
providers: [
UserService,
...
],
})
export class LazyModule {
constructor(
private userService: UserService,
private store: Store<any>) {
console.info(`replaceReducer(${ModuleRootReducer.name})`);
this.store.replaceReducer(ModuleRootReducer);
}
}