【问题标题】:Angular Form Array of object is not working对象的角度形式数组不起作用
【发布时间】:2018-05-01 15:00:42
【问题描述】:
// 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" } ]

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

【问题讨论】:

  • 好吧,您只是创建了一个表单控件,而您显然需要两个。乍一看,这至少是个问题:)
  • cpv 和 value 在我们提交表单时必须成对出现...[{ 'cpv' : 'cpv1', 'value': 'test1'}, {'cpv': 'cpv2', '值': 'test2'}]
  • @DavidJeyathilak 然后你可以将它们创建为一个对象;检查我的编辑
  • @AJT_82 我正在stackoverflow.com/questions/46781055/…以另一种方式尝试

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


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多