1

我知道有异步管道,使用可观察对象可以订阅并在更新时获取值。

我正在尝试创建一个简单的管道,它将使用其代码获取分类器的翻译,但它使用 observable 来实现,因此它是异步的。我可以以某种方式等待 aync 操作完成然后返回结果吗?什么是最佳方式?我不认为异步管道是我正在寻找的,因为它基本上是一个具有自己的 HTML 的组件。

代码

@Pipe({
    name: 'translate'
})
export class Translate implements PipeTransform {

    constructor(public translateContext: TranslateContext) {
    }

    transform(value: any, classification: string): any {
     this.translateContext.getTranslation(classification).subscribe(res => {
            return res.get(value.toString());
        });
    }
}

我想在 HTML 中使用以下管道,如下所示

{{code | translate: classificator }}

我怎么能从管道中解决这个问题,它会得到这个值。

return res.get(value.toString());
4

1 回答 1

3

改成:

transform(value: any, classification: string): any {
 return this.translateContext.getTranslation(classification).map(res => {
        return res.get(value.toString());
    });
}

并像这样使用它:

{{code | translate:classificator | async }}

这里的想法是返回一个包含您的值的可观察对象,然后使用 订阅可观察对象async。这将在您的模板中显示映射的值。

于 2018-03-05T09:47:50.003 回答