假设我有这个模型:
export class MyModel {
constructor(
public id: number,
public name: string
) {}
}
和这个ControlGroup:
export class MyComponent {
form: ControlGroup;
model: MyModel;
constructor(builder: FormBuilder) {
this.form = this.builder({
'id' : [''],
'name' : ['']
})
}
}
要获取表单数据,我可以这样做(如果字段名称匹配):
this.model = this.form.value;
但是如何以相同的方式设置表单的值?
something like: this.form.value = model;
获得以下错误: 无法设置#< AbstractControl>的属性值它只有一个吸气剂
谢谢!
UPD :根据GünterZöchbauer的建议,我最终得到了帮助方法:
setFormValues(form: ControlGroup, model: any) {
for(var key in model) {
var ctrl = (<Control>form.controls[key]);
if ( ctrl != undefined )
ctrl.updateValue(model[key]);
}
}
答案 0 :(得分:1)
this.builder.group(...)
返回的 setValue() {
let value = {id: 'xxx', name: 'yyy'};
Object.keys(value).forEach((k) => {
this.form.controls[k].updateValue(value[k]);
});
}
不支持设置值。要设置值,您必须在每个控件上单独设置它,如:
execute