StaticInjectorError / NullInjectorError - 使用AOT

时间:2018-01-05 20:35:36

标签: typescript angular5 ngrx-effects

我有一项服务需要注入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支持。现在需要直接转向社区。

提前致谢。

修改 我在角度5.0.1和Typescript 2.4.2

0 个答案:

没有答案