1st api包含2个带字段的数组premiumFrequency-代码-标签
policyStatus-代码-标签
第二个api还包含2个字段
-policyFrequency-状态
- if(policyFrequency==premiumFrequency.code(=>打印:premiumFrequency.label
- if(status==policyStatus.code(=>打印:policyStatus.label
我已经使用forJoin在结果中附加了这两个api。可以作为结果访问第一个api。policys结果是第二个api。policyStatus
如何比较和显示模板文件中的标签?
●JSON数据第一个api:"数据":{"resultMap":"premiumFrequency":[{"id":"YEARLY";,"代码":"YEARLY";,"标签":"每年";},{"id":"不可用";,"代码":"不可用";,"标签":"不可用";},{"id":"PREMIUM";,"代码":"PREMIUM";,"标签":"高级">
},],"policyStatus":[{"id":"建议书";,"代码":"建议书";,"标签":"建议书";},{"id":"IN_SUSPENSE";,"代码":"IN_SUSPENSE";,"标签":"在悬念中";}
]
第二个api:"resultList":[{"policyFrequency":"MONTHLY";,"状态":"IN_ FORCE";},]
有几种方法可以解决这个问题。由于您收到了来自两个独立api调用的响应,并且决定使用forkJoin来组合它们,因此我们可以在类的开头创建两个空数组。在订阅forkJoined可观察器时,我们在数组上使用find/some方法,如下所示:
apiOne.find(value => apiTwo.some(res => res.policyFrequency === value.code)));
我们在另一个响应上做同样的事情,而不是看哪里:
apiOne.find(value => apiTwo.some(res => res.status === value.code)));
然而,您的API响应都不匹配,所以我创建了一个stackblitz项目并更改了一些值,这样您就可以看到这是如何工作的。
https://stackblitz.com/edit/angular-ivy-hfuu6w?file=src%2Fapp%2Fapp.component.ts