首页 > 解决方案 > 使用 FormBuilder 设置 FormArray 值的语法是什么

问题描述

我无法弄清楚如何在使用FormBuilder. 看起来它应该相当明显,但我似乎无法让它发挥作用。我正在构建一个表格:

buildForm() {
const controlArray = this.redirectPortsForm.get('redirectPortsArray') as FormArray;

Object.keys(this.ports).forEach((i) => {
  controlArray.push(
    this.formBuilder.group({
      //port_entry: new FormControl({ value: this.ports[i].redirect_text, disabled: false })
      port_entry: new FormControl({ value: "", disabled: false })
    })
  )
})

console.log(controlArray.controls)
}

我通过有意将其设置为空来注释掉用于测试的行,因此当我成功设置它时会很明显。我有一个循环,我想在其中设置值。这是一个简化版本:

const controlArray = this.redirectPortsForm.get('redirectPortsArray') as FormArray;
for (const [i, port] of ports.entries()) {
  controlArray.controls[i].patchValue({value: i.toString()});
}

我已经尝试了很多变体,但这是最新的。还有更多的东西吗?我错过了一些明显的东西吗?该代码不会引发任何错误,但也不会修补这些值。

标签: angular

解决方案


因为你FormGroup有这个结构{ port_entry: new FormControl(...) }patchValue' 的论点应该是{ port_entry: i.toString() }


推荐阅读