Angular 5和ngx-translate带有共享模块的松散翻译(如果刷新)

时间:2018-07-27 14:09:02

标签: angular ngx-translate

我有一个使用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变量的检查?

1 个答案:

答案 0 :(得分:4)

我的共享模块中也有translateModule,每个模块都在导入它。我在共享模块中导出了TranslateModule。这样做,一切都按预期工作,并且每个模块都显示了翻译。也许尝试相同的方法,看看它是否对您有用。

TranslateModule.forRoot({
      loader: {
        provide: TranslateLoader,
        useFactory: (createTranslateLoader),
        deps: [HttpClient]
      }

通过app.module在自举组件中通过translateService设置useDefaultLanguage。这样,它是唯一在顶层设置默认语言的地方。