许多 ngModule 中具有变量的一项服务
One Service with variable in many ngModule
这不是真正的问题,而是一个问题:
在一个测试项目中,我尝试在具有相同 TranslateService 的多个 ngModule 中使用 ng2-translate。
package.json :
"ng2-translate": "^4.0.0"
它不起作用,我必须为每个模块声明一个新的
'TranslateModule'
在组件中,它是一个新的 TranslateService,因此它不会保留翻译语言值。
您是否尝试在多个 ngModule 中注入相同的服务?如果是,怎么办?
谢谢。
尝试共享模块
import {TranslateModule, TranslateService, TranslateLoader, TranslateStaticLoader} from 'ng2-translate/ng2-translate';
@NgModule({
imports: [..,TranslateModule],
declarations: [..],
exports: [ .., TranslateModule]
})
export class SharedModule {
static forRoot(): ModuleWithProviders {
function translateLoader(http: Http) {
return new TranslateStaticLoader(http, 'i18n', '.json');
}
return {
ngModule: SharedModule,
providers: [UserService, ItemService, {
provide: TranslateLoader,
useFactory: translateLoader,
deps: [Http]
},
TranslateService],
};
}
}
将 AppModule.ts 中的 TranslateModule.forRoot() 更改为 SharedModule.forRoot()。
这不是真正的问题,而是一个问题:
在一个测试项目中,我尝试在具有相同 TranslateService 的多个 ngModule 中使用 ng2-translate。
package.json :
"ng2-translate": "^4.0.0"
它不起作用,我必须为每个模块声明一个新的
'TranslateModule'
在组件中,它是一个新的 TranslateService,因此它不会保留翻译语言值。
您是否尝试在多个 ngModule 中注入相同的服务?如果是,怎么办?
谢谢。
尝试共享模块
import {TranslateModule, TranslateService, TranslateLoader, TranslateStaticLoader} from 'ng2-translate/ng2-translate';
@NgModule({
imports: [..,TranslateModule],
declarations: [..],
exports: [ .., TranslateModule]
})
export class SharedModule {
static forRoot(): ModuleWithProviders {
function translateLoader(http: Http) {
return new TranslateStaticLoader(http, 'i18n', '.json');
}
return {
ngModule: SharedModule,
providers: [UserService, ItemService, {
provide: TranslateLoader,
useFactory: translateLoader,
deps: [Http]
},
TranslateService],
};
}
}
将 AppModule.ts 中的 TranslateModule.forRoot() 更改为 SharedModule.forRoot()。