【问题标题】:How do I populate a form array in Angular 2?如何在 Angular 2 中填充表单数组?
【发布时间】:2017-01-09 09:39:09
【问题描述】:

假设我们有一个可以包含值数组的表单。 对于这种情况,Angular 为我们提供了FormArray 类。

this.form = new FormGroup({
  addresses: new FormArray([]),
})

我们还可以使用NgForm#setValue。这可用于使用从服务器检索到的一些数据填充表单。

当我从服务器接收到新数据时,我想用该数据填充表单。例如,我的数据如下所示:

const data = {
  addresses: [
    { country: 'USA', city: 'New York' },
    { country: 'Germany', city: 'Berlin' },
  ]
}

现在是时候用这些数据填充表单了。 当我尝试简单地调用 this.form.setValue(data) 时出现错误:

Cannot set property stack of [object Object] which has only a getter

如何在表单中填充数据,但需要满足以下要求:

  1. 我知道addresses 属性的形状。
  2. 我不知道data.addresses 数组中的地址数量。

【问题讨论】:

  • 您找到解决方案了吗?我认为这里的问题是物品的数量
  • @kaseOga 是的,完全正确!但问题并没有为我解决。我不知道如何描述通用数组接口并将其应用于动态元素列表
  • @Girafa。在这个问题上您还需要帮助吗?
  • @AngularChef 是的,请

标签: javascript forms angular


【解决方案1】:

在下面试试这个

this.form.setControl('addresses', this.formBuilder.array(this.data.addresses || []));

【讨论】:

    猜你喜欢
    • 2017-06-25
    • 2021-09-22
    • 2019-10-30
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 2019-09-01
    相关资源
    最近更新 更多