[英]How to get the summation of iterated FormArray
我有一个函数,它从特定的输入中收集值,这个输入是 FormGroup 中 FormArray 的一部分(嵌套),函数是这样的
addSales(){
this.itemsArray.controls.findIndex(i => {
this.totalPrice =parseFloat(i.get('price').value)
console.log(this.totalPrice)
}
)}
添加多个值时,例如:10,20,30 我会像这样打印它们
10
20
30
我所需要的只是返回这些值的总和,即 60,请您告诉我该怎么做
从哲学的角度来看,我建议对代码进行一些更改:
遵循功能范式(无副作用)
使用reduce
而不是findIndex
通过迭代数组生成新值(请参阅reduce docs )
现在addSales
函数执行两个角色:(1)迭代itemsArray
和(2)更新this.totalPrice
中每个项目的itemsArray
。 它使代码更难测试,因为有很多事情要做。
相反,我建议执行以下操作:
addSales(): number {
return this.itemsArray.controls.reduce((sum, i) => {
sum += parseFloat(i.get('price').value)
return sum;
}, 0);
}
handleInputChange() {
this.totalPrice = this.addSales();
}
一旦handleInputChange
绑定到模板中的输入更改,您将能够更轻松地查看代码正在做什么(从而轻松调试)。
+=
而不是=
在this.totalPrice
之后
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.