在 Angular 中,当修改一个 FormArray 中的值时,该值不会自动更新。需要手动调用 FormArray 的 markAsDirty()
和 updateValueAndValidity()
方法来更新值。
示例代码:
this.myForm = this.fb.group({
addresses: this.fb.array([
this.fb.group({
city: ['', Validators.required],
state: ['', Validators.required]
})
])
});
// 修改表单数组中的值
const addressesArray = this.myForm.get('addresses') as FormArray;
const addressGroup = addressesArray.at(0) as FormGroup;
addressGroup.get('city').patchValue('New York');
// 手动更新表单数组中的值
addressGroup.markAsDirty();
addressGroup.updateValueAndValidity();