如何在formArray内部的ng-multiselect-dropdown中绑定数据

问题描述 投票:0回答:1

我想将时间重复数据绑定到ng多选下拉列表中,但是在编辑时它限制了我的数组索引大小。

数据

"questionnaireData":[{"questionnaireId":"Xvqo5atpw",
                      "timeRepeat":[{
                                      "item_id":1,
                                       "item_text":"01:00"
                                    },
                                    {
                                      "item_id":2,
                                      "item_text":"02:00"
                                    }]    
                                 }],

在分配给formBuilder.array(ap.timeRepeat)的组件formArray中,向timeRepeact添加新选项时,它会生成错误。

component.ts

this.addAppointmentForm.setControl('questionnaireData', 
this.setExistingQuestionnairesDetails(this.AppointmentList.questionnaireData));


setExistingQuestionnairesDetails(questionDataArray: IQuestionnaireData[]): FormArray {
    const formArray = new FormArray([]);
    console.log(questionDataArray);
    questionDataArray.forEach(ap=>{

      formArray.push(this.formBuilder.group({
        questionnaireId: ap.questionnaireId,
        timeRepeat: this.formBuilder.array(ap.timeRepeat),

      }))
    })
    return formArray;
  }

Link to Screenshot

compnent.html

<ng-multiselect-dropdown formControlName="timeRepeat" [data]="dropdownList"
  [(ngModel)]="timeRepeat" [settings]="dropdownSettings" (onSelect)="onItemSelect($event)" 
  (onSelectAll)="onSelectAll($event)" (onDeSelect)="onDeSelect($event)">
 </ng-multiselect-dropdown>
javascript angular dropdown formarray
1个回答
0
投票

您需要将AbstractControl或其后代类之一的对象添加到FormArray:

questionDataArray.forEach(ap=> {

  formArray.push(this.formBuilder.group({
    questionnaireId: ap.questionnaireId,
    timeRepeat: this.formBuilder.array(ap.timeRepeat.map(obj => this.createItem(obj)))
  })
})

createItem(obj: any): FormGroup {
  return this.formBuilder.group({
    item_id: obj.item_id,
    item_text: obj.item_text
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.