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