繁体   English   中英

如何获得迭代FormArray的总和

[英]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,请您告诉我该怎么做

从哲学的角度来看,我建议对代码进行一些更改:

  1. 遵循功能范式(无副作用)

  2. 使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM