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]);
    });
  }