如何使用async过滤带有rxjs 6的数组的Observable

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

我有一个Observable作为可观察的数据返回,并使用HTML与异步绑定。

我在这里打电话给服务。

this.ProductOptions = this.ProductService.fetchProduct();

在HTML中我们绑定为

Productoptions | async.

它工作正常。

在另一个函数调用中,我已根据产品名称进行过滤,但它无效。

getCategory() {
  const productListOptions = this.productOptions.pipe(
    switchMap((itemList: BindingModel[]) => itemList.filter(product => product.name !== "Active")));

  console.log(this.productListOptions);
}

this.productOptions在控制台中显示如下。

enter image description here


但是当我订阅了observable。

this.productService.fetchproducts().subscribe(response => console.log(response));

我的格式低于格式

[{id:1,name:"Active"},{id:1,name:"InActive"}]; i need to filter based on Active
angular angular6 angular2-services rxjs5 rxjs6
1个回答
0
投票

您使用switchMap应该使用map运算符。

差异:

switchMap

将发出Observable的Observable转换为单个Observable,该Observable发出最近发出的Observables发出的项目

换句话说,switchMap中定义的函数必须返回一个observable。您的示例返回一个项目数组,而不是一个observable

地图

通过将函数应用于每个项目来转换Observable发出的项目。

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