【发布时间】:2017-06-09 14:50:35
【问题描述】:
我在 Angular2 应用程序中有一个翻译管道。 我有一个名为: LanguageComponent 的组件,它是所有其他组件的父级。
{ path: ':lang', component: LanguageComponent,
children: [
{ path: 'search', component: SearchComponent },
]}
语言组件读取 URL 并将其添加到翻译服务和从该服务读取的管道:
this.route.params.subscribe(params => {
this.translate.setCurrentLanguage(params['lang'].toLowerCase());
});
一切正常,翻译和参数中的值是正确的。 但问题出在 GUI 中:
{{ 'label' | translate }}
管道在语言组件之前被编译。所以'label'的值总是默认的:'en-us'
翻译服务:
public defaultLanguage = 'en-us';
getCurrentLanguage(): any {
if (this.locale == null) {
this.locale = window.navigator.language == null ? this.defaultLanguage : window.navigator.language;
}
return this.locale;
}
路由返回正确的值。但是如果我在语言组件中设置一个调试器 onInit 并在语言服务中设置另一个。服务内的调试器将在另一个之前启动并读取默认值,无论 URL 中的值是什么。
有人知道怎么解决吗?
【问题讨论】:
标签: angular typescript pipe