我有一个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
在控制台中显示如下。
但是当我订阅了observable。
this.productService.fetchproducts().subscribe(response => console.log(response));
我的格式低于格式
[{id:1,name:"Active"},{id:1,name:"InActive"}]; i need to filter based on Active
您使用switchMap应该使用map运算符。
差异:
switchMap
将发出Observable的Observable转换为单个Observable,该Observable发出最近发出的Observables发出的项目
换句话说,switchMap中定义的函数必须返回一个observable。您的示例返回一个项目数组,而不是一个observable
地图
通过将函数应用于每个项目来转换Observable发出的项目。