在构建控件时使用值/状态正确的FormControl作为初始控件值,并在表单重新初始化时重新创建FormControl,而不是尝试更新现有FormControl的状态。
示例代码:
在组件类中定义控件:
export class MyComponent implements OnInit {
myForm: FormGroup;
constructor(private formBuilder: FormBuilder) {}
ngOnInit() {
this.buildForm();
}
buildForm() {
this.myForm = this.formBuilder.group({
myControl: [{value: 'initial value', disabled: true}]
});
}
}
在模板中使用控件:
在需要重新初始化表单时,先销毁原有的FormControl,再创建一个新的:
rebuildForm() {
// destroy original control
this.myForm.get('myControl').reset();
this.myForm.removeControl('myControl');
// create new control with correct status/value
const newControl = this.formBuilder.control({value: 'new value', disabled: false});
this.myForm.addControl('myControl', newControl);
}