web-dev-qa-db-ja.com

Angular:フォームにコントロールが存在するかどうかを確認する方法

以下は、サービスから応答を取得するための私のコードです。ここに従業員のリストがあります。

サービスの応答に基づいてフォームコントロールを動的にバインドする必要があります。サービスは、フォームにコントロールがあるよりも多くのフィールド(EmployeeId、Name、Departmentなど)を返します。フォームコントロールで使用されていないものをスキップするにはどうすればよいですか?

this._employeeService.getEmployeeById(this.employeeId).subscribe((res: Response) => {
        debugger;
        this.employeeForm.get('FileUploader').setValue(null);        
        //this.employeeForm.setValue(res);
        for (const field in res) {
          this.employeeForm.controls[field].setValue(res[field]);
        }
      }); 

this.employeeForm = this._fb.group({
      EmployeeId: 0,
      Name: ''});
4
Sunil Kumar

設定値にはpatchValueを使用できます

this.employeeForm.patchValue(res);
3
Krishna Rathore

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

8
Rodrigo