Angular Form对象的数组不起作用

时间:2017-11-17 18:46:43

标签: angular angular-reactive-forms angular-forms

// setup the form
const formGroup = {};
for (const prop of Object.keys(this.dataObject)) {
  try {
    const cpv = this.dataObject[prop].cpv;
    const value = this.dataObject[prop].value;
    formGroup['componentDetails'] = new FormArray([
      new FormControl({'cpv': cpv, 'value': value})
    ]);
  } catch (e) {
    console.log('Exception in Form setup - ' + e);
  }
}

我有上面的代码来为我的表单设置表单控件和表单数组。生成的结果JSON不会添加value属性:(

我得到了什么:

"componentDetails": [ { "cpv": "CPV_1" } ]

我需要什么

"componentDetails": [ { "cpv": "CPV_1", "value": "test value" } ]

我没有看到任何错误。想知道你是否有人遇到同样的问题以及他们是如何解决的?

1 个答案:

答案 0 :(得分:1)

由于@ AJT_82建议value必须是另一个FormControl

formGroup['componentDetails'] = new FormArray([
  new FormControl({'cpv': cpv}),
  new FormControl({''value': value})
]);

编辑:如果他们需要成对出现:

const cpv = this.dataObject[prop].cpv;
const value = this.dataObject[prop].value;
let pair: any = { 'cpv': cpv, 'value': value };

formGroup['componentDetails'] = new FormArray([
    new FormControl(pair)
]);

请参阅:https://angular.io/api/forms/FormArray