我正在发出发布请求,并希望根据条件过滤对象响应以获取一些数据,因此在我的对象响应中,我需要过滤并找到互联网银行业务的对象数组, 根据我在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不熟悉,有人可以指导我吗?
答案 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>
与find
相同: STACKBLITZ