【问题标题】:Dynamically add FormArray to a FormGroup将 FormArray 动态添加到 FormGroup
【发布时间】:2018-07-20 09:01:05
【问题描述】:

我想动态添加一个 FormArray,这是我的表单:

this.form = this.formBuilder.group({
   workFlowId: ['', Validations.required]
})

在我的 UI 中,用户必须在输入中写入 workFlowId,然后我想以 workFlowId 作为 FormArray 的键向表单添加一个新的 FormArray。

表单的结果应该是这样的:

{"workFlowId": 123,"123":[{"key":"username", "value": "mor"}]}

有可能做这样的事情吗?如果是这样,它在 HTML 中的外观如何?

【问题讨论】:

  • 要在表单组中添加数组吗?
  • 是的,但我想在用户在其他输入中输入内容并将输入作为该数组的键后动态添加它。

标签: angular angular-reactive-forms


【解决方案1】:

在你的表单中添加新的arrayForm时试试这个函数:

(this.form.get('workFlowId') as FormArray).push(new FormGroup({
      'key' : new FormControl('username'),
      'value': new FormControl('mor')
}))

您的附加输入表单:

<form [formGroup]="inputForm" (ngSubmit)="onSubmit()">
<input [formControlName]="input1">
<input [formControlName]="input2">
</form>

你的控制器:

/* Additional formGroup definition */
this.form = this.formBuilder.group({
   input1: ['']
   input2: ['']
})

/* Submitting function to transfer data from inputform to destination array form */
onSubmit() {
(this.form.get('workFlowId') as FormArray).push(new FormGroup({
      'key' : new FormControl(inputForm.get('input1').value),
      'value': new FormControl(inputForm.get('input2').value)
}))
}

【讨论】:

  • 如果我理解正确,此代码会将对象推送到现有数组,而不是使用在“workFlowId”中输入的键创建新数组
  • 是的,正确的。您可以在您希望将这些数据推送到数组的另一种形式的onSubmit 中使用上述函数,即(click)="createNewFormArrayEntry($event)" 在一种形式之间传输数据到formArray
猜你喜欢
  • 2020-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-15
  • 2020-08-02
  • 2018-02-12
  • 2019-05-02
相关资源
最近更新 更多