Javascript arrayGroup的角度反应形式错误修补值

Javascript arrayGroup的角度反应形式错误修补值,javascript,angular,angular-reactive-forms,Javascript,Angular,Angular Reactive Forms,我有以下问题,我想把这个值转换成角反应形式 我使用以下代码: export function clearArray(formArray: FormArray) { while (formArray.controls.length) { removeAtIndex(formArray, 0); } } export function makeArrayForm( formArray: FormArray, modelGroup: AbstractControl, da

我有以下问题,我想把这个值转换成角反应形式 我使用以下代码:

export function clearArray(formArray: FormArray) {
  while (formArray.controls.length) {
    removeAtIndex(formArray, 0);
  }
}

export function makeArrayForm(
  formArray: FormArray,
  modelGroup: AbstractControl,
  data: any[] = []
) {
  clearArray(formArray);
  let index = 0;
  do {
    formArray.push(modelGroup);
    index++;
  } while (index < data.length);
}

export function bindData(
  formArray: FormArray,
  modelGroup: AbstractControl,
  data: any[] = []
) {
  makeArrayForm(formArray, modelGroup, data);
  formArray.patchValue(data);
}
调用bindData值后,我的表单数组由数组的最后一个元素填充,这是错误的。
我哪里出错了?

我解决了。问题是模型组是对象。 对象通过引用传递给函数,所以模型组被多次复制。 解决方案

[
    {{id:1, name:{Jonny}},
    {{id:2, name:{Tonny}}
]
export function makeArrayForm(
  formArray: FormArray,
  formCreatorFunction: (FormBuilder) => FormGroup,
  formBuilder: FormBuilder,
  dateArray: any[] = []
) {
  clearArray(formArray);
  dateArray.forEach(() => {
    const newForm = formCreatorFunction(formBuilder);
    formArray.push(newForm);
  });
}