下面,我订阅的是一个可观察但仅更新第一个对象的值。我通过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']);
}
});
答案 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时,控制台上没有任何内容