Автоматически заполняемый ионно-выбираемый элемент на основе выбора из другого многократно выбранного ионно-выбираемого элемента - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь автоматически заполнить элементы в поле ionic-selectable множественный выбор на основе выбора другого множественного выбора, используя идентификаторы, доступные для получения списка элементов из GraphQL.

Я довольно новИонные и угловатые, так что было довольно сложно найти информацию, которая мне нужна для этого.Похоже, что в проекте используется ионно-угловой 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>

Существует также связанный метод, используемый для заполнения выборок.это также идентично, за исключением ссылки на «элемент (ы)» вместо «вторичный_элемент (ы)».

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;
        }
    }
}

По существу, «вторичные_элементы» должны показывать все элементы, которые имеют element_ids, которые соответствуют идентификаторам с elements.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...