#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 и кнопки. в принципе, когда я выбираю некоторые элементы из выпадающего списка и сохраняю их, а при нажатии кнопки редактирования все добавленные элементы из выпадающего списка должны быть видны.