我试图为angular2做一个非常简单的翻译管道。但如果承诺工作,我可能会错。我们的想法是从异步服务中获取语言参数,该服务在PouchDB中调用doc。 Fyi,数据组织如下:
{
title: {
fr: "text in french",
en : "text in english",
...
}
承诺内部的回报并不起作用。 html模板为空。我不明白为什么。
@Pipe({name: 'translate'})
export class Translate {
lang:any;
constructor(private interfaceService: Interface){}
transform(obj) {
this.interfaceService.getParams().then((data) => {
return obj[data.language]
}).catch((error) => {
console.log(error);
});
}
}
如果我把回报置于承诺之外,那就有效:
@Pipe({name: 'translate'})
export class Translate {
lang:any;
constructor(private interfaceService: Interface){}
transform(obj) {
return obj.en
}
}
感谢您的帮助
答案 0 :(得分:3)
您必须从函数返回结果承诺。
export class Translate {
// ...
transform(obj) {
return this.interfaceService.getParams().then((data) => {
return obj[data.language]
}).catch((error) => {
console.log(error);
throw error; // or `return Promise.reject(error);`
});
}
}