1 回答

TA貢獻1993條經驗 獲得超6個贊
當您設置 value 時,myInput.value = selectedCode.code;您正在更改 DOM Input 元素的 value 屬性。
但是,如文檔中所述ngForm 指令在表單元素上創建并注冊一個 FormGroup 實例。通過ngModel與nameinput 元素上的屬性一起使用,將創建一個 FormControl 作為 FormGroup 的子項。
因此,如果您想以編程方式更改表單中任何元素的值,則應使用 ReactiveForms API 函數來完成。否則,除非用戶與 DOM 進行顯式交互,否則 DOM 中的更改將不會反映到底層 FormControl。
基本上,如果您想以編程方式更改任何表單元素的值,您應該在底層 FormControl 上執行此操作,而不是在 DOM 上。所以改變showPartPicker如下的簽名應該可以解決問題;
<button type="button" (click)="showPartPicker(formData.controls.warehouse_part_code)">
</button>
和
showPartPicker(formCtrl: AbstractControl) {
const modalPartPicker = this.modalService.open(WarehousePartPickerComponent);
modalPartPicker.componentInstance.emmiter
.subscribe((selectedCode:WarehousePartGet) => {
formCtrl.setValue(selectedCode.code);
});
}
添加回答
舉報