我如何通过订阅Observable来过滤ID

时间:2019-11-21 20:45:14

标签: angular observable subscription

下面,我订阅的是一个可观察但仅更新第一个对象的值。我通过ID = 413,我想过滤ID,这样我只能得到那个对象,有人可以帮我吗?

谢谢

this.Ordersummary.subscribe(
        r => {
            if (r.length != 0) {
                this.thepackage = r[0];
                this.emptySummary = true;
            } else {
                this.router.navigate(['packages/gbr/public']);
            }
        });

3 个答案:

答案 0 :(得分:1)

您始终可以使用地图和过滤器。或者,如果您希望订阅仅触发特定值,则必须先进行过滤。

类似这样的东西:

pipe(
  filter(item => item.ID === 413)
).subscribe(val => console.log(val));

答案 1 :(得分:0)

如果您只想过滤必要的ID,则可以创建一个简单的方法,

filterById(yourId: number) {
    this.filteredPackage = this.thepackage.filter(package => package.id === yourId);
}

说明:

将响应分配给subscribe()中的this.thepackage对象之后,您的响应就可以通过this.thepackage对象进行全局访问。为了获取ID为413的单条记录,只需将ID传递到方法filterById()中即可。由于修改原始对象很麻烦,因此我们将新过滤的项目分配给新变量this.filteredPackage

this.filterById(yourId);    // yourId is 413 here

答案 2 :(得分:0)

this.Ordersummary.pipe(
        filter((item: any) => item.id === this.packageid)
    ).subscribe(val => console.log('VAL: ', val));

当我单击项目413时,控制台上没有任何内容