如何正确过滤角度

时间:2018-04-24 12:55:08

标签: angular rxjs-pipeable-operators

我有一个服务冰从后端拉出一个数组,我需要根据ID从数组中获取一个项目,我该如何在Angular中执行此操作?

enter image description here

  

我正在寻找如何专门使用angulars管道操作员。如果没有正确完成,过滤器往往只是停止工作而不会抛出错误。我可以获取行信息,但我无法定位我得到的属性"Cannot read property 'id' of undefined"

4 个答案:

答案 0 :(得分:1)

  

angulars pipeable operator

我不完全确定你是什么意思的角度管道操作员。你的问题中有rxjs-pipeable-operators标签,所以我希望你的意思是rxjs运算符。

所以我假设你真正想做什么。如果我不理解,请发表评论。

您有一个从数组中返回Observable的服务。像这样:

function getMyData(): Observable<any[]> {
    return Observable.create(observer => {
        observer.next([
            { name: 'value 1', id: 1 },
            { name: 'value 2', id: 2 },
            { name: 'value 3', id: 3 }
        ]);

    });
}

如果要修改此可观察流中的值,则不能直接在流上使用过滤器或查找。您收到的值是完整数组,因此对数组对象而不是单个项执行查找操作。你想要做的是映射结果值并在映射函数中过滤它。

getMyData()
    .map((theArray: any[]) => theArray.find(item => item.id === 2))

答案 1 :(得分:0)

  

我需要根据ID

从数组中获取单个项目

尝试使用Array.find()

let data = yourArray.find(x => x.id == "en-gb");

或尝试使用array().filter().shift()

请仔细阅读以下讨论

Difference between find() and filter().shift() on javascript

答案 2 :(得分:0)

docker run -it -p 80:8080 --label com.docker.ucp.mesh.http=external_route=my1.example.com,internal_port=80 container_1

How do I filter an array with TypeScript in Angular 2?

答案 3 :(得分:0)

表示数组中的单个项目。

.url