2017-02-23 72 views
0

有人貼出了plnkr展示如何有通過服務下載json文件,並從翻譯角2翻譯JSON觀察到不起作用

管道使用它,但它僅適用於一個翻譯,因爲我新角度,我覺得很難理解/調試,我問是否有人可以指向我這個代碼有什麼問題

https://plnkr.co/edit/VMqCvX(我可以分叉它,但它不會節省:-()

當我添加另一個詞來翻譯和另一個traduction,只有最後一個被翻譯

應用程序/國際化/ 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幫助

感謝

回答

0

我不知道在哪裏你從這裏得到了這個例子,但我看到那裏似乎並不需要的東西。有一個Observable不需要在那裏(這隻會導致流中最後一個項目被重播)。我分叉的plunkr:

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

這一個工程。

0

問題在於Observable只對訂閱它的最後一個值發出true。這是因爲觀察者之間沒有共享。您可以修改觀察者訂閱之間共享本身,讓他們都知道,當數據被加載像這樣:

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

Demo