如何检查表单中是否存在控件

问题描述 投票:0回答:3

下面是我从服务获取响应的代码。在这里,我得到了一份员工名单。

我需要根据服务的响应动态绑定表单控件。但是,我的服务返回的字段(EmployeeId、Name、Department 等)多于表单的控件。如何跳过表单控件中未使用的那些字段?

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: ''
});
angular angular6 angular-forms angular-formbuilder
3个回答
38
投票

虽然已经有了一个公认的答案,但值得一提的是,确实有一种可用的方法,以防万一它可能对那些真正想要一种具体方法来验证 FormGroup 中给定 FormControl 是否存在的人有用:

包含(控件名称:字符串):布尔值


来源:https://angular.io/api/forms/FormGroup#contains


14
投票

您可以使用FormGroup类的get方法。在 getEmployeeById 回调中更改迭代器,如下所示:

for (const field in res) {
  const formControl = this.employeeForm.get(field);

  if (formControl) {
     formControl.setValue(res[field]);
  }
}

来源:https://angular.io/api/forms/FormGroup


7
投票

您可以使用

patchValue
设置值

this.employeeForm.patchValue(res);
© www.soinside.com 2019 - 2024. All rights reserved.