有没有办法合并两个表单数组控件?

时间:2019-06-24 06:47:01

标签: angular angular-reactive-forms

我的代码中有两个表单数组。我需要将它们合并,并在合并后的数组上执行添加和删除操作。 我需要串联每个表单数组的表单数组控件

let a = this.nextBillForm.controls["electricityBillCycleEnergyCharges"] as FormArray;
let b = this.nextBillForm.controls["electricityBillCycleOtherCharges"] as FormArray;

1)逐个填充

a.forEach(element => {
  b.push(element);
});

2)串联

 a.concat(b)

双向尝试。两者都显示错误

2 个答案:

答案 0 :(得分:2)

FormArray不是数组。它没有forEachconcat函数。不过,您可以在controls属性上进行操作

a.controls.forEach(control => {
 b.push(control);
});

const combined = a.controls.concat(b.controls);

请参见FormArray documentation

答案 1 :(得分:0)

您好,@ Nat_centralogic您尝试过的两种方法都将不起作用,因为表单Array对象不是Array引用。 它是表单组的参考。 FormArray参考没有像concat或push这样的任何方法,即为什么会引发错误。

请参见下图:

enter image description here

尽管顾名思义,认为它是数组却不是。

作为解决方案,您可以将所有项目链接到单个fromArray,也可以单独使用它们以避免复杂性。