我有一项服务需要注入ngrx效果模块。我还需要将此服务注入到我的应用程序的根目录中。我将服务添加到应用程序的提供者列表中。这一切都编译并运行得很好,直到我运行AOT编译。
在我的ItemsEffects
课程(我的一个效果课程)中,我得到了这个
Error: StaticInjectorError[AppMonitoringService]:
StaticInjectorError[AppMonitoringService]:
NullInjectorError: No provider for AppMonitoringService!
此效果类在我的效果模块中导入:
@NgModule({
imports: [
EffectsModule.forRoot([
// ...effects classes
])
})
export class MyEffectsModule { }
效果模块被导入另一个模块,该模块被导入我的根应用程序模块:
@NgModule({
imports: [
StoreModule.forRoot(/* reducers included here */),
MyEffectsModule,
],
});
export class MyStoreModule{ }
如上所述,上面的模块被导入我的根模块:
@NgModule({
imports: [
MyStoremodule
],
});
export class AppModule { }
当然,有问题的课程只是尝试注入服务:
@Injectable()
export class ItemsEffects{
constructor (private appMonSvc: AppMonitoringService) {
}
}
...导致开头提到的错误:
Error: StaticInjectorError[AppMonitoringService]:
StaticInjectorError[AppMonitoringService]:
NullInjectorError: No provider for AppMonitoringService!
我尝试将服务导入到每个可以想象的地方。我尝试使用{provider: AppMonitoringService}
语法,我尝试从根应用程序模块中删除提供程序,我甚至尝试编写自己的forRoot语法来导入它,但它都不起作用。
最奇怪的是,我的一些效果是从应用程序中导入服务。定义此方法的方式相同,并且没有依赖关系。我很好奇是否有人知道可能会发生什么,以及我如何能够解决这个问题?我99%肯定我已经阅读了有关此问题的所有问题以及github和angular 2支持。现在需要直接转向社区。 p>
提前致谢。
修改 我在角度5.0.1和Typescript 2.4.2