首页 文章

角度反应形式错误的arrayGroup的patchValue

提问于
浏览
0

我有以下问题,我想要patchValue到角度反应形式我使用以下代码:

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);
}

模型组由FormBuilder在conmponent中制作,我调用此函数我尝试添加以下数组

[
    {{id:1, name:{Jonny}},
    {{id:2, name:{Tonny}}
]

在调用bindData值后,我的表单数组被我的数组的最后一个元素填充了什么错误 . 哪里弄错了?

1 回答

  • 0

    我解决了它 . 问题是模型组是对象 . 对象通过引用传递给函数,因此modelGroup是重复的多时间 . 解

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

相关问题