Angular : 如何检查表单中是否存在某些控件
Angular : How to check if some control exist in form or not
下面是我从服务获取响应的代码。我在这里获取员工列表。
我需要根据服务的响应动态绑定表单控件,我的服务返回的字段(EmployeeId、姓名、部门等)多于表单的控件。如何跳过表单控件中没有用到的?
this._employeeService.getEmployeeById(this.employeeId).subscribe((res: Response) => {
this.employeeForm.get('FileUploader').setValue(null);
for (const field in res) {
this.employeeForm.controls[field].setValue(res[field]);
}
});
this.employeeForm = this._fb.group({
EmployeeId: 0,
Name: ''
});
可以用patchValue
设置值
this.employeeForm.patchValue(res);
您可以使用 FormGroup class 的 get 方法。在 getEmployeeById 回调中更改迭代器,如下所示:
for (const field in res) {
const formControl = this.employeeForm.get(field);
if (formControl) {
formControl.setValue(res[field]);
}
}
虽然已经有一个公认的答案,但值得一提的是,确实有一种方法可用,以防万一它可能对那些真正想要一种具体方法来验证 FormGroup 中给定 FormControl 是否存在的人有用:
包含(控件名称:字符串):布尔值
下面是我从服务获取响应的代码。我在这里获取员工列表。
我需要根据服务的响应动态绑定表单控件,我的服务返回的字段(EmployeeId、姓名、部门等)多于表单的控件。如何跳过表单控件中没有用到的?
this._employeeService.getEmployeeById(this.employeeId).subscribe((res: Response) => {
this.employeeForm.get('FileUploader').setValue(null);
for (const field in res) {
this.employeeForm.controls[field].setValue(res[field]);
}
});
this.employeeForm = this._fb.group({
EmployeeId: 0,
Name: ''
});
可以用patchValue
设置值
this.employeeForm.patchValue(res);
您可以使用 FormGroup class 的 get 方法。在 getEmployeeById 回调中更改迭代器,如下所示:
for (const field in res) {
const formControl = this.employeeForm.get(field);
if (formControl) {
formControl.setValue(res[field]);
}
}
虽然已经有一个公认的答案,但值得一提的是,确实有一种方法可用,以防万一它可能对那些真正想要一种具体方法来验证 FormGroup 中给定 FormControl 是否存在的人有用:
包含(控件名称:字符串):布尔值