2017-04-13 62 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 
}