Angular 对象的布尔值/“;平均值”;布尔函数(更好的解释)
有这个目标Angular 对象的布尔值/“;平均值”;布尔函数(更好的解释),angular,typescript,Angular,Typescript,有这个目标 this.form= { info: { isactive: true }, section1: { isComplete: true, subs: { person: { isComplete: true
this.form= {
info: {
isactive: true
},
section1: {
isComplete: true,
subs: {
person: {
isComplete: true
},
workinfo: {
isComplete: true
}
}
},
section2: {
isComplete: false,
subs: {
base: {
isComplete: true
},
address: {
isComplete: true
},
lr: {
isComplete: false
}
}
},
...
我希望能够基于subs isComplete将节的isComplete属性设置为true/false
如果其中一个子项[].isComplete为false,则section.isComplete将为false
我已经调查了。减少,但没有成功
我想让它与许多需要的潜艇任何部分的工作
我正在尝试下面这样的东西(暂时不起作用)
obj = form.section1;
obj.isComplete = false;
for (const key of Object.keys(obj.subs)) {
obj.isComplete = obj.isComplete && obj.subs[key].isComplete;
}
有什么想法吗
多谢各位
不起作用
显然这是行不通的,因为false&&boolean
将始终以false
返回。请以true
开头
obj = form.section1;
obj.isComplete = true;
for (const key of Object.keys(obj.subs)) {
obj.isComplete = obj.isComplete && obj.subs[key].isComplete;
}
通常“不起作用”的信息不足以帮助你;具体来说,您的代码中有什么不起作用?是不是
isComplete
保持false
?这是因为false&&anythingElse
总是false
。您应该将isComplete
初始化为true
。如果需要,还可以使用obj.isComplete=Object.values(obj.subs).every(v=>v.isComplete)
。我想回答这个问题,但我不确定我是否完全理解你的问题,没有一个易于测试的答案。这篇文章中给出的答案可能就是你正在寻找的解决方案。this.formSectionsAlt[parentSection].isComplete=Object.values(subSection).every(v=>v.isComplete);成功了;谢谢你jcalzor只需做
并跳过声明它<代码>!!obj.isComplete&&obj.subs[key].isComplete。
obj = form.section1;
obj.isComplete = true;
for (const key of Object.keys(obj.subs)) {
obj.isComplete = obj.isComplete && obj.subs[key].isComplete;
}