我具有以下结构
app.module.ts
@ngModule({
imports: [
// other imports
SharedModule,
TranslateModule.forRoot({
loader: { provide: TranslateLoader, useFactory: createTranslateLoader, deps: [HttpClient] }
})
],
providers: [
// other providers
TranslateService
]
})
export class AppModule { }
shared.module.ts
@ngModule({
declarations: [MyComponent]
imports: [
// other imports
AnotherComponentModule,
TranslateModule.forChild()
],
exports: [MyComponent]
})
export class SharedModule { }
使用此设置,我得到了错误
ERROR NullInjectorError:StaticInjectorError(AppModule)[TranslateService-> TranslateStore]:StaticInjectorError(平台:核心)[TranslateService-> TranslateStore]:NullInjectorError:没有TranslateStore提供者!
从Angular 6迁移到Angular 8时开始出现错误。
该错误不会出现在AnotherComponentModule
内部的组件中,因此仅在直接在SharedModule
中声明的组件中才出现。
当我将MyComponent放入其自己的模块并将其导入sharedModule时,事情开始起作用。
我已经尝试将TranslateService
和TranslateStore
添加到SharedModule
以及包含使用MyComponent
的组件的模块,但是它没有用。
您的翻译服务正在寻找翻译商店的提供者,但在任何地方都找不到,似乎您的进口商品有问题。您能否在您的shared.module.ts中共享其他导入内容,以便获得更多背景信息,从而指出问题所在?