以下は、サービスから応答を取得するための私のコードです。ここに従業員のリストがあります。
サービスの応答に基づいてフォームコントロールを動的にバインドする必要があります。サービスは、フォームにコントロールがあるよりも多くのフィールド(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: ''});
設定値にはpatchValue
を使用できます
this.employeeForm.patchValue(res);
FormGroupクラスのgetメソッドを使用できます。次のように、getEmployeeByIdコールバックでイテレータを変更します。
for (const field in res) {
const formControl = this.employeeForm.get(field);
if (formControl) {
formControl.setValue(res[field]);
}
}