我有大约60个属性,并使用mat-tab
将它们映射到60个控件中。现在,对于编辑模式,我必须为所有控件设置值。
以这种方式发现
this.form.controls['dept'].setValue(selected.id);
找到每个控件并分配值。
反正在那里,
this.form.setValue(modelName);
还是我可以更简单地设置值而不是编写60行代码的方法?
我用过ReactiveForms
。
答案 0 :(得分:3)
我不太清楚您的模型和控件之间的关系,但是您可以尝试遍历表单控件的键并适当地设置值,如下所示:
const keys = Object.key(this.form.controls);
keys.forEach((key: string) => {
this.form.controls[key].setValue(model[key]);
});
或者,如果您已经在循环中创建控件,只需在创建时设置值即可。
本文帮助我做到了这一点:https://alligator.io/angular/reactive-forms-formarray-dynamic-fields/
答案 1 :(得分:0)
如果模型属性与表单属性相同(模型已完全映射到表单),则可以使用setValue
中的Raactive Form方法。
您的代码将如下所示:
this.form.setValue(yourModelObject)
这会将所有模型属性分配给表单属性。
答案 2 :(得分:0)
使用如下补丁值:
let obj = {
dept: 'abc'
};
this.form.patchValue(obj);