问题出现的原因是当Angular视图中的FormControl的值发生更改时,其视图状态会被标记为“脏”的。因此,将新的值传递给patchValue()方法后,该值只会在控件处于“脏”的情况下被更新。
解决这个问题的方法是,在编辑控件之前,使用markAsPristine()方法将FormControl的状态标记为“原始值”。然后,在调用patchValue()方法之前,再将FormControl的状态标记为“脏值”,以确保其更新该值。
以下是解决方法的示例代码:
this.myForm.controls['myControl'].markAsPristine(); // 标记控件为原始值 this.myForm.controls['myControl'].setValue(newValue); // 设置新的值 this.myForm.controls['myControl'].markAsDirty(); // 标记控件为脏值