Angular 将数组值设置为formgroup

Angular 将数组值设置为formgroup,angular,multipartform-data,form-data,formbuilder,Angular,Multipartform Data,Form Data,Formbuilder,我试过了 this.formgroup = formbuilder.group({ os: [null, [Validators.required]], }); const osType= ['Android', 'Ios'] 结果 this.formgroup.controls.os.setValue(osType) 预期结果 os: ['Android', 'Ios'] 我需要使用formdata发送数据。我尝试过使用setValue,但得到的结果与我预期的不同。有人能告

我试过了

this.formgroup = formbuilder.group({
      os: [null, [Validators.required]],
});

const osType= ['Android', 'Ios']
结果

this.formgroup.controls.os.setValue(osType)
预期结果

os: ['Android', 'Ios']

我需要使用formdata发送数据。我尝试过使用setValue,但得到的结果与我预期的不同。有人能告诉我如何达到预期的效果吗。提前感谢

您需要一系列FormControls。您可以使用map转换FormControls中的数组

os: 'Android'
os: 'Ios'

如果要使用setValue,请记住formArray的元素数必须与使用setValue之前的数组的元素数相同

注意:如果要管理不在formGroup内的formArray,则需要创建一个辅助函数

this.formarray = this.formbuilder.array(
    this.osType.map(x=>this.formbuilder.control(x))
);
然后你就可以写了

  getControl(i)
  {
    return this.formarray.at(i) as FormControl
  }


注2:在Angular 10之前,您可以采用其他方式:像formGroup一样使用formArray,或者使用循环变量来指示控件,但现在这是控制formArray“独立”的方式。

您需要创建formGroup数组,这可能会有所帮助
<div *ngFor="let control of formarray.controls;let i=index">
    <input [formControl]="getControl(i)">
</div>