我有一个使用FormBuilder实例化的反应式表单。我想使用此表单来更新或添加新员工。我正在尝试向formBuilder构造函数添加一个表达式,该构造函数检查是否存在当前选定的员工,以及是否使用该员工的一个接口字段作为表单上的值,如果没有当前选定的员工则为空字符串作为特定FormControl的值。
我尝试了什么:
'EMP_NM': [this.selectedEmp ? this.selectedEmp.EMP_NM : '', Validators.required],
然后在我的editEmployee函数中:
editCashier(employee: IEmployee) {
this.selectedEmp = employee;
this.empForm.reset();
console.log(this.selectedEmp.EMP_NM);
}
当我这样做时,HTML中EMP_NM输入字段上显示的值不会更新。我已尝试在editEmployee函数中设置setTimeout(),但这也不起作用。知道这里可能出了什么问题吗?
我使用formBuilder的组函数在我的conponent的构造函数中初始化empForm。如果我将它移动到另一个函数然后每次调用editEmployee函数来重新初始化表单时调用该函数会有帮助吗?
答案 0 :(得分:0)
您可以使用patchValue或setValue更新它:
this.empForm['controls']['employee'].patchValue(employee);
不知道它是否是嵌套控件,但你可以更多层次。