Forms 角度2。以数据驱动形式设置ControlGroup的值
假设我有这个模型:Forms 角度2。以数据驱动形式设置ControlGroup的值,forms,data-binding,angular,data-driven,Forms,Data Binding,Angular,Data Driven,假设我有这个模型: export class MyModel { constructor( public id: number, public name: string ) {} } 这个对照组: export class MyComponent { form: ControlGroup; model: MyModel; constructor(builder: FormBuilder) { this.f
export class MyModel {
constructor(
public id: number,
public name: string
) {}
}
这个对照组:
export class MyComponent {
form: ControlGroup;
model: MyModel;
constructor(builder: FormBuilder) {
this.form = this.builder({
'id' : [''],
'name' : ['']
})
}
}
要获取表单数据,我只需执行以下操作(如果字段名匹配):
但是我怎样才能以同样的方式设置表单的值呢
something like: this.form.value = model;
获取以下错误:
无法设置#的属性值,它只有一个getter
谢谢大家!
UPD:根据Günter Zöchbauer下面的建议,我最终选择了那个助手方法:
setFormValues(form: ControlGroup, model: any) {
for(var key in model) {
var ctrl = (<Control>form.controls[key]);
if ( ctrl != undefined )
ctrl.updateValue(model[key]);
}
}
setFormValues(形式:ControlGroup,型号:any){
用于(var输入模型){
var ctrl=(form.controls[key]);
如果(ctrl!=未定义)
ctrl.updateValue(model[key]);
}
}
从此.builder.group(…)
返回的控制组
不支持设置值。要设置值,必须在每个控件上单独设置该值,如:
setValue() {
let value = {id: 'xxx', name: 'yyy'};
Object.keys(value).forEach((k) => {
this.form.controls[k].updateValue(value[k]);
});
}
谢谢。不得不做一些MOD,但最终成功了。不将此标记为已接受答案,因为这是一个解决方法。希望他们能在将来的版本中实现这样的功能,有人会在这里提到。但我对你的评论投了赞成票。
setValue() {
let value = {id: 'xxx', name: 'yyy'};
Object.keys(value).forEach((k) => {
this.form.controls[k].updateValue(value[k]);
});
}