在Angular中过滤响应对象

时间:2019-09-24 05:44:45

标签: angular typescript rxjs

我正在发出发布请求,并希望根据条件过滤对象响应以获取一些数据,因此在我的对象响应中,我需要过滤并找到互联网银行业务的对象数组, 根据我在Google上的发现,这是我尝试的方法:

响应对象:

getPaymentChannel() {
  this.paymentService.getData(data)
  .pipe( map(
      res => res.filter(items => items.data.items ==='Internet Banking')
      .subscribe(res => console.log(res))
  ))
}

component.ts

'PaymentChannels[]'

我想使用* ngFor在html中显示credit card,所以我认为我需要按名称过滤此响应,即internet banking或{{1}},这是我的stackblitz链接{ {3}},我对rxjs和Typescript不熟悉,有人可以指导我吗?

1 个答案:

答案 0 :(得分:3)

如果您知道只在寻找一项,则可以使用find,它会返回一个对象。但是,我们在这里使用filter,因为这是您要使用的。

显然,您想按name中的items进行过滤,因此您的过滤器应如下所示:

 map((res: PaymentModel) => 
   res.data.items.filter((x: Item) => x.name === 'Internet Banking')

如果找到,它将返回具有所有匹配项的数组。因此,现在您想在html中显示paymentChannels,迭代数组并添加一个嵌套的ngFor来迭代paymentChannels

<div *ngFor="let dat of myData">
  <div *ngFor="let p of dat.paymentChannels">
    <!-- ... -->
  </div>
</div>

Your forked STACKBLITZ

find相同: STACKBLITZ