一个formGroup里面的两个formArray来设置选项

问题描述

我需要帮助设置 FormGroup。

我有一个 formGroup 如下:

this.formBuilder.group({
      id: [(this.idItem) ? this.idItem : null],quantity: [{value: 1,disabled: false}],attributes: this.formBuilder.array([])
});

在每个属性中,我还有另外两个 formArray:

attribute_values;
attribute_selected;

后端检索数据时我填写attribute_values如下:

data.attributes.forEach(attribute => {
  formArray.push(this.formBuilder.group({
    attribute_values: this.setAttributeValues(attribute.attribute_values),attributes_selected: this.formBuilder.array([]) 
  }))
});


this.myForm.setControl('attributes',formArray);

我使用以下函数在attribute_values中设置数据:

setAttributeValues(items): FormArray {

const formArray = new FormArray([]);

items.forEach(item => {
  formArray.push(this.formBuilder.group({
    name: [item.name],description: [item.description],photo: [item.photo],price: [item.price],}))
});

return formArray;

}

我用这个表单动态创建了一个带有attribute_values数据的checkBox列表,如下:

      <div
        formArrayName="attribute_values">
        <div *ngFor="let attribute_value of attribute.get('attribute_values')['controls']; let j = index;">
          <div [formGroupName]="j">
            <mat-checkBox>{{attribute_value.value.name}}</mat-checkBox>

          </div>
        </div>
      </div>

What I would like is that when a checkBox is selected its value is included in the attributes_selected array.我正在手动执行此操作,并在复选框的更改事件中使用一个函数。但我想通过 formBuilder 来做,这样当我用来自后端的数据做 form.patchValue(data) 时,之前选择的那些选项会自动填充。

有没有办法以这种方式创建这个 formGroup?

非常欢迎任何帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...