Как связать данные из выпадающего списка множественного выбора primeng Angular

#angular #primeng #primeng-dropdowns

#угловатый #primeng #primeng-выпадающие списки

Вопрос:

Я использую выпадающий список primeng Multiselect в форме.

При нажатии на кнопку редактирования я хочу отобразить существующие данные во всех полях. для ввода текста он отображается так, как я использую [(ngModel)], и я пробовал то же самое для выпадающего списка Multiselect, но он не работает.

поэтому я не могу привязать значения выпадающего списка multiselect. Я пробовал использовать цикл for, но значения не поступают в поле.

       <div *ngFor ="let role of resource.roles;">
        {{role.name}}
        <p-multiSelect
        [options]="resourceRoles | dropdownToValuePipe"
        placeholder="Select"
        name = "roles"
        id="roles"
        [(ngModel)]="role.name"
        ngModel
        required
        appendTo="body"
      >
      </p-multiSelect>
      </div>
 

Поле роли - это выпадающий список с несколькими вариантами выбора

Ответ №1:

С вашим текущим кодом вы создаете один multiselect для каждой роли, которую имеет ресурс / пользователь. Я предполагаю, что это не то, что вы хотите, иначе вы, вероятно, просто использовали бы обычный выпадающий список.

Итак, если вам действительно нужен только один multiselect, вы бы сделали что-то вроде этого:

   <p-multiSelect
    [options]="resourceRoles"
    optionLabel="name"
    placeholder="Select"
    name="roles"
    id="roles"
    [(ngModel)]="resource.roles"
    required
    appendTo="body"
  >
  </p-multiSelect>
 

Я не был уверен, что делает канал, возможно, он вам не понадобится, если вы используете optionLabel . Я также удалил дубликат ngModel .

Возможно, вы захотите также поиграть с использованием dataKey="roleId" , если объекты в resource.roles не совпадают с объектами in resourceRoles . Это соответствовало бы выборкам на основе roleId вместо использования равенства объектов

Комментарии:

1. Спасибо за попытку @kevinDoyon. Да, из выпадающего списка multiselect я добавляю такие значения, как (серверная разработка, фронтальная разработка, руководитель группы и т. Д.). Поэтому я хочу связать эти параметры и отобразить их при повторном редактировании формы. Я пробовал использовать ваш приведенный выше код, но вместо значений отображается пустое значение.

2. Вы пытались добавить dataKey="roleId" или dataKey="id" или какое-либо уникальное свойство id, которое вы используете?

3. Да. DataKey = «id» Никаких изменений. Ключ данных=»resource.roles.id «флажок»Все параметры» был установлен, поэтому я подумал не так, как надо.

4. Посмотрите на этот стекблитц, может быть, он покажет вам, в чем дело: stackblitz.com/edit/angular-ivy-bn7st5 Если вы предоставляете подобный stackblitz, когда задаете вопросы, с минимальным кодом, который может воспроизвести проблему, это очень помогает людям отвечать

5. Вот Stackblitz — angular-ivy-hy3ffv.stackblitz.io . Я только что добавил выпадающий список Multiselect и кнопки. в принципе, когда я выбираю некоторые элементы из выпадающего списка и сохраняю их, а при нажатии кнопки редактирования все добавленные элементы из выпадающего списка должны быть видны.