Angular 2 Pipe - 不能在promise中返回值

时间:2016-07-12 10:41:35

标签: angular promise pipe

我试图为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

  }

}

感谢您的帮助

1 个答案:

答案 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);`
    });
  }
}