我试图根据另一个多重选择的选择,使用可从GraphQL检索项目列表的ID,自动填充ionic-selectable
多重选择框中的项目。
我对Ionic和Angular还是很陌生,所以很难找到所需的信息。看起来该项目正在使用离子角3.9.2。
至少,这是次要多重选择,目前,除了名称之外,其他所有选择都与主要多重选择相同,主要多重选择仅是“元素”。我已经复制了需要重复的元素,因为主要/次要部分也相同,除了次要上的外键。
<ion-list>
<ion-item>
<ion-label stacked color="primary">Secondary Elements</ion-label>
<ionic-selectable
#secondaryElementsComponent
item-content
formControlName="secondary_elements"
[items]="secondary_elements"
itemValueField="id"
itemTextField="name"
[canSearch]="true"
[isMultiple]="true"
[canClear]="true"
[(ngModel)]="user.secondary_elements"
[isOkButtonEnabled]="secondaryElementsComponent.itemsToConfirm.length > 1 && secondaryElementsComponent.itemsToConfirm.length <= 5"
></ionic-selectable>
</ion-item>
</ion-list>
还有一种用于填充选择的关联方法,除了引用“ element(s)”而不是“ secondary_element(s)”之外,该方法也相同。
formatModelsForSelects(){
// [...]
if (this.user.secondary_elements) {
if(this.user.secondary_elements.length){
var secondary_elements_object_array = [];
this.user.secondary_elements.forEach( (element) => {
var secondary_element_in_elements = this.secondary_elements.find(s => s.id == secondary_element);
if (secondary_element_in_elements)
secondary_elements_object_array.push(secondary_element_in_elements)
});
if (secondary_elements_object_array.length)
this.user.secondary_elements = secondary_elements_object_array;
}
}
}
本质上,“ secondary_elements”需要显示所有具有element_id
且ID与elements
匹配的项。