@ ngx-translate得到的观察结果不会因语言变化而触发

时间:2017-06-21 14:26:16

标签: angular ngx-translate

将angular2与@ngx-translate模块一起使用

我根据用户选择进行语言更改的代码,并使用以下语言设置语言:

this.translate.use('en');

在其他组件的其他地方,我使用.get observable来检索一些标签。

this.translate.get(element.bucketId.toUpperCase()).subscribe( x => { bucket.bucketLabel = x; } );

当前语言的初始标签加载正常,但是当执行.use时,标签不会更改为新语言。观察者不会发射。

要解决这个问题,我必须做以下事情:

this.translate.get(element.bucketId.toUpperCase()).subscribe( x => { bucket.bucketLabel = x; } );
this.translate.onLangChange.subscribe( event => {
    bucket.bucketLabel = this.translate.instant(element.bucketId.toUpperCase());
});

这显然似乎过分了。

使用管道和指令的代码完美地切换语言。

我是否误解了.get的作用?或者在进行语言切换时是否还有其他一些技巧。除了做一个this.translate.use(lang);

之外的事情

1 个答案:

答案 0 :(得分:1)

尝试.stream()方法,它会在语言发生变化时返回新值。

smaller classes