angular - 如何在异步管道上使用自定义管道?

标签 angular rxjs angular-pipe

我正在尝试在异步管道上创建自定义管道,我尝试了很多解决方案,但仍然无法正常工作。这是代码片段。

product.sort.ts - 自定义管道

import { PipeTransform, Pipe } from '@angular/core';
import { Observable } from 'rxjs/Observable';

@Pipe({
    name: 'sortByName'
})
export class ProductPipe implements PipeTransform{
    /*transform(values: Array<any>, term:string){
        return values.filter(obj => obj.pname.startsWith(term))
    }*/

    //CODE NOT WORKING >>>>>
    transform($value: Observable<Array<any>>, term:string){
        if($value){
            $value.subscribe(
                (obj) => {
                    return obj.filter(obj => obj.pname.startsWith(term))
                }
            )
        }
    }
}

products.component.ts - 主要组件

import { Component, OnInit } from '@angular/core';
import { Store } from '@ngrx/store';
import { Observable } from 'rxjs/Observable';
import { AppService } from '../app.service/app.service';
import { ProductPipe } from '../products.sort/products.sort';

@Component({
    selector: 'products-pg',
    template: `
        Products List:
        <ul>
            <li *ngFor = 'let product of $productList | async | sortByName:"A"'>{{product.pname}}</li>
        </ul>
    `
})
export class ProductsComponent implements OnInit{
    private $productList:Observable<Array<any>>;

    constructor(private _service: AppService, private _store: Store<Array<any>>){}

    ngOnInit(){
        this._service.setProductList();
        this.$productList = this._store.select('products');
    }
}

在这里,我使用商店进行状态管理,我尝试按名称排序,因此将“A”作为第一个字母传递。由于 $productList 是可观察的,如何编写处理这种异步行为的管道,请帮我解决这个问题。

最佳答案

我也遇到了同样的问题,我修复它的方式是这样的:

<li class="list-group-item" *ngFor='let alert of _alerts$ | ipwrAlertFilter:seeAll | async'>

看看我是如何在异步管道之前使用我的自定义过滤器的,这样我的自定义管道就得到了一个可观察对象,然后在我的管道中我有这个:

return value.map(data => data.filter(x => x.originalHasBeenSeen === false));

这样我的自定义管道仍然返回一些我仍然可以应用 async 管道的东西。因此,对于流中的每个新项目,我仍然会点击我的自定义管道,并且我的 View 会更新。 希望这会有所帮助。

关于angular - 如何在异步管道上使用自定义管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41548035/

相关文章:

Angular 2% 管道输出不正确

angular - 显示来自 angularfire2 查询的单个项目

angular - Ionicons 在 Ionic4 中返回 404

javascript - SystemJS 未找到 RxJS 根目录

javascript - 如何在 Angular 2 的 PipeTransform 中使用自定义组件?

组件中管道过滤器的 angular2 错误

javascript - Angular cli 和 javascript 回调函数

java - Restful API 的读取列表

javascript - 是否有机会从 RxJs 'next' 中省略 'subscribe' 部分

javascript - 从服务器发送请求时发生合并映射错误