我正在创建一个角度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调用并填充trans对象,则转换发生。但如果我按需调用它,则首先执行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
}