在构建控件时使用值/状态正确的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);
}