我想将时间重复数据绑定到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;
}
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>
您需要将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
});
}