将值设置为FormControl Angular 6

时间:2019-05-25 19:08:16

标签: angular typescript

我有大约60个属性,并使用mat-tab将它们映射到60个控件中。现在,对于编辑模式,我必须为所有控件设置值。

以这种方式发现

this.form.controls['dept'].setValue(selected.id);

找到每个控件并分配值。

反正在那里,

this.form.setValue(modelName);

还是我可以更简单地设置值而不是编写60行代码的方法?

我用过ReactiveForms

3 个答案:

答案 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);