我有一个使用ngx-translate的角度应用程序。在版本下方:
"@angular/core": "5.2.6",
"@ngx-translate/core": "9.1.1",
"@ngx-translate/http-loader": "2.0.1"
在AppModule类中,我在下面添加了导入:
imports: [
.....
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: (createTranslateLoader),
deps: [HttpClient]
}
})
......
]
.....
export function createTranslateLoader(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
然后我创建了一个SharedModule来导出TranslateModule:
exports: [
// Modules
TranslateModule,
....
]
除我刷新放置在与应用程序模块(导入SharedModule)不同的模块中的页面外,所有内容都像魅力一样。 在这种情况下,我需要导航回到主页(在AppModule中编码),一旦到达主页ngx-translate即可恢复工作,并且可以使用有效的ngx-translate重新导航至其他页面。 / p>
有人可以帮助我吗?预先感谢
更新 似乎问题与以下事实有关:刷新页面时,translateService.currentLang未定义。如果我通过translateService.use(language)以编程方式设置ngOnInit中的语言,则可以正常工作。 如何通过设置默认的currentLang避免在每个组件中手动设置对currentLang变量的检查?
答案 0 :(得分:4)
我的共享模块中也有translateModule,每个模块都在导入它。我在共享模块中导出了TranslateModule。这样做,一切都按预期工作,并且每个模块都显示了翻译。也许尝试相同的方法,看看它是否对您有用。
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: (createTranslateLoader),
deps: [HttpClient]
}
通过app.module在自举组件中通过translateService设置useDefaultLanguage。这样,它是唯一在顶层设置默认语言的地方。