angular 2 translation json observable不起作用

时间:2017-02-23 13:56:44

标签: json angular service

有人发布了一个plnkr来展示如何通过服务下载json文件并从管道中使用它进行翻译

但它只适用于一个翻译,因为我是棱角分明的新手,我觉得很难理解/调试,我问是否有人可以指出我这个代码有什么问题

https://plnkr.co/edit/VMqCvX(我可以分叉但不保存:-()

当我添加另一个词来翻译和另一个翻译时,只翻译了最后一个词

应用程序/ I18N / localizable.it.strings

{
    "home.nav.calendar": "Calendar"
    "home.nav.test": "Test"
}

应用程序/ app.component.ts

<span>{{'home.nav.calendar' | translate}}</span>
<span>{{'home.nav.test' | translate}}</span>

plz help

感谢

2 个答案:

答案 0 :(得分:0)

我不确定你从哪里得到这个例子,但我看到那些似乎不需要的东西。有一个Observable不需要在那里(这导致只重放流中的最后一项)。我把那个笨蛋分开了:

transform(value: string, args: string[]) : any {
console.log("transform", value);
// this.translationLoadedSub = this._translation.translationLoaded.subscribe((data) => {
//   console.log("transform", value);
//   this.value = this._translation.getTranslationByKey(value);
//   this._ref.markForCheck();
//   this.loaded = true;
// });

 this.loaded = true;

https://plnkr.co/edit/t3pkj02cVBHPyjTTdXop?p=preview

这个有效。

答案 1 :(得分:0)

问题是Observable只对订阅它的最后一个值发出true。这是因为观察者之间没有共享观察者。您可以修改观察者以在订阅之间共享自己,以便他们都知道何时加载数据:

this.translationLoaded = Observable.create((observer) => {
    this.translationLoadedObserver = observer;
}).share();

Demo