我正在试图弄清楚如何将形状数组修补成一个类型的react 角形式.PatchValue和setValue在我的脑海中并不一致,例如,对于FormControl. 这是一张表格
this.form = fb.group<IPersonForm>({
name: new FormControl<string | null>('bob'),
phones: new FormArray<FormGroup<IPhoneForm>>([]),
});
我可以很容易地修补名称控件:
this.form.controls.name.patchValue('Jim', { onlySelf: true, emitEvent: false });
但表单数组是一个挑战.假设我创建了一个replacemenmt数组
const myPhone = this.fb.group<IPhoneForm>({
phone: new FormControl<string | null | undefined>('bob')
});
const array = new FormArray<FormGroup<IPhoneForm>>([myPhone]);
现在,如果我try 修补(或设置),两者都不编译:
//this.form.controls.phones.setValue(array);
//this.form.controls.phones.setValue(array.controls);
//this.form.controls.phones.patchValue(array);
//this.form.controls.phones.patchValue(array.controls);
我可以使用setControl,但该方法没有onlySelf选项:
this.form.setControl('phones', array, { emitEvent: false });
我觉得那里只需要自己,因为如果我要替换数据并有复杂的验证,我不希望它们在任何控件上运行,直到整个表单修补完毕. 谢谢!
这是一个带有演示的堆栈闪电战:https://stackblitz.com/edit/angular-path-typed-array?file=src%2Fmain.ts