用于HTML过滤的Angular管道内的可观察请求

问题描述 投票:0回答:1

我知道有异步管道,使用observables你可以订阅并在更新时获取值。

我试图创建一个简单的管道,它将使用其代码获得分类器的转换,但它使用一个observable,所以它是异步的。我能以某种方式等待异步操作完成然后返回结果吗?什么是最佳方式?我不认为async Pipe是我正在寻找的,因为它基本上是一个带有它自己的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());
javascript angular asynchronous angular-observable
1个回答
2
投票

改成:

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

并使用它像:

{{code | translate:classificator | async }}

这里的想法是返回一个包含你的值的observable,然后使用async订阅observable。这将在模板中显示映射值。

© www.soinside.com 2019 - 2024. All rights reserved.