我有一个使用带有大量控件元素的FormBuilder构建的表单,我想根据服务器的响应为它们设置值
目前我这样做:
this.form.controls['a'].setValue(data.a);
this.form.controls['b'].setValue(data.b);
this.form.controls['c'].setValue(data.c);
this.form.controls['d'].setValue(data.d);
等等。
有没有办法让它更整洁?
答案 0 :(得分:3)
您可以使用FormGroup
的{{3}}。
根据API文档。
它接受一个与组结构匹配的对象 将名称控制为键。
你可以这样做:
this.form.setValue({
a:data.a,
b:data.b,
c:data.c,
d:data.d
});
您需要确保所有控制值一起显示,并且它们会传递您为表单设置的任何validators
。
您也可以使用@Gunther建议的setValue功能来填写表单。 它可以在没有验证的情况下获取表单值的子集,并尝试匹配它们。