【发布时间】:2021-11-13 08:49:35
【问题描述】:
我有返回以下数组的 myObservable$:
[
{ "firstProp": "A", "secondProp": "NA", "available": false },
{ "firstProp": "B", "secondProp": "NA", "available": true },
{ "firstProp": "C", "secondProp": "Old", "available": false },
{ "firstProp": "C", "secondProp": "New", "available": false }
]
我需要一种方法来创建一个新数组来检查“firstProp”和“可用”并将以下结构推入一个新数组:
[
{ imgSrc: 'pathTo/myImages/file1.svg', badgeStyle: val?.available ? 'fas fa-exclamation-circle fa-lg' : 'fas fa-check-circle fa-lg', cardLabel: 'First Label'},
{ imgSrc: 'pathTo/myImages/file2.svg', badgeStyle: val?.available ? 'fas fa-exclamation-circle fa-lg' : 'fas fa-check-circle fa-lg', cardLabel: 'Second Label'},
{ imgSrc: 'pathTo/myImages/file3.svg', badgeStyle: val?.available ? 'fas fa-exclamation-circle fa-lg' : 'fas fa-check-circle fa-lg', cardLabel: 'Third Label'},
]
这是我的解决方案,但我觉得可能有更好的解决方案:
const OBJ1 = { imgSrc: 'pathTo/myImages/file1.svg', badgeStyle: val?.available ? 'fas fa-exclamation-circle fa-lg' : 'fas fa-check-circle fa-lg', cardLabel: 'First Label'};
const OBJ2 = { imgSrc: 'pathTo/myImages/file2.svg', badgeStyle: val?.available ? 'fas fa-exclamation-circle fa-lg' : 'fas fa-check-circle fa-lg', cardLabel: 'Second Label'};
const OBJ3 = { imgSrc: 'pathTo/myImages/file3.svg', badgeStyle: val?.available ? 'fas fa-exclamation-circle fa-lg' : 'fas fa-check-circle fa-lg', cardLabel: 'Third Label'};
myObservable$.subscribe((value) => {
value?.forEach((val) => {
if (val?.firstProp === 'A') {
this.myNewArray.push(OBJ1);
} else if (val?.firstProp === 'B') {
this.myNewArray.push(OBJ2);
} else if (val?.firstProp === 'C' && val?.secondProp === 'New') {
this.myNewArray.push(OBJ3);
}
});
});
在以下情况下,我也未能找到解决方案:
因为我使用不同类型的“secondProp”(旧的和新的)将“firstProp”作为“C”的 2 倍。规则是,当一个或两个“C”都“可用”时,我必须将badgeStyle显示为“感叹号”:true,当两个C都“可用”时,我必须显示badgeStyle的“green-tick”:false
【问题讨论】:
-
您也可以将新数组设为
Observable,然后只需将pipe设为subscribe。 -
这种情况如何运作?
badgeStyle: val?.available ? 'fas fa-exclamation-circle fa-lg' : 'fas fa-check-circle fa-lg',您在对象中没有val属性,它将始终返回false -
是的,@Yuriy 我有 val.available 属性。它来自 myObservable 返回的数组,带有 value?.forEach
标签: angular typescript rxjs-observables