Angular 标记阵列两个可观测值之间差异的最简单方法

Angular 标记阵列两个可观测值之间差异的最简单方法,angular,rxjs,Angular,Rxjs,我对angular和rxjs很陌生 找出由可观测物发射的两个阵列之间的差异的最简单方法是什么 在下面的示例中,我尝试获取可用角色的数组,获取分配角色的数组 我的目标是标记allRoles$数组和assignedRoles$数组中的角色: getAvailableUserRoles(userId:string):可观察的{ const allRoles$:Observable=this.getRoles(); const assignedRoles$:Observable=this.getUser

我对angular和rxjs很陌生

找出由可观测物发射的两个阵列之间的差异的最简单方法是什么

在下面的示例中,我尝试获取可用角色的数组,获取分配角色的数组

我的目标是标记
allRoles$
数组和
assignedRoles$
数组中的角色:

getAvailableUserRoles(userId:string):可观察的{
const allRoles$:Observable=this.getRoles();
const assignedRoles$:Observable=this.getUserRoles(userId);
forkJoin([allRoles$,assignedRoles$]))
.烟斗(
映射([allRoles,assignedRoles])=>{
for(所有角色的常量所有角色){
for(const assignedRole of assignedRole){
if(assignedRole.id==allRole.id){
allRole.assigned=true;
}否则
allRole.assigned=false;
}
}
}));
返回所有角色$;
}

感谢您的帮助。

您基本上做得对:

getAvailableUserRoles(userId:string):可观察的{
const allRoles$:Observable=this.getRoles();
const assignedRoles$:Observable=this.getUserRoles(userId);
返回forkJoin([allRoles$,assignedRoles$]))
.烟斗(
映射([allRoles,assignedRoles])=>{
allRoles.forEach(角色=>{
role.assigned=!!assignedRoles.find(assignedRole=>role.id==assignedRole.id));
});
返回所有角色;
}));
}