2017-04-13 97 views
0

我正在創建一個角度2應用程序,其中我實現了多語言翻譯。所以我需要做的是根據用戶偏好改變語言。在角2中執行代碼後訂閱加載數據

這裏是代碼..

public trans: any; 
public instant(){ 
var str = "Hello"; 
this.setLanguage("hi-IN"); 
return this.translate(str); 
} 

public setLanguage(lang: string){ 
this.http.get('url').subscribe((data) => { 
this.trans = data; 
} 
} 

public translate(key: string){ 
if(this.trans[key]){ var translated = this.trans[key]; 
    return translated; 
} 
} 

這裏的情況是什麼,如果我做的構造HTTP調用,並填補了跨對象,然後翻譯發生。但如果我按需要調用它,則translate()首先被執行,然後執行setLanguage(),因此失敗。

+0

你可以在這個問題上分享更多的代碼。構造函數等 –

回答

0

您可以使用promise而不是訂閱請參閱下面的代碼。

public setLanguage(lang: string){ 
    var data= this.http.get('url').map(res => res.json()).toPromise(); 
    promise.then(data =>this.trans = data); 
    return promise 
}