Я пытаюсь использовать PrimeNG Multi-Select в реактивной форме, используя их документацию, чего очень не хватает в отношении реактивных форм.
Я пытаюсь отобразить выбранные элементы под элементом управления формой, как в их примере, за исключением того, что в их примере используется ngModel
, а не элемент управления реактивной формы.
Я создал остальную часть своего кода, как в их примере, создал переменную
divisionList: SelectItem[];
и заполнил его в конструкторе, как показано в их примере.
Затем я создаю элемент управления формой, определенный в форме formBuilder:
fg = this.fb.group({
...
divisions: ['']
});
и HTML
<p-multiSelect
[options]="divisionList"
formControlName="divisions"
defaultLabel="Select"
></p-multiSelect>
Их простой подход, основанный на ngModel, <p>Selected Cars: {{selectedCars1}}</p>
Но я не использую ngModel. Итак, как мне отобразить выбранные элементы в шаблоне?
Обновлять:
Я все еще надеюсь, что есть более простой способ, но пока мне удалось добавить обработчик изменений:
<p-multiSelect
[options]="divisionList"
formControlName="divisions"
dropdownIcon="pi pi-caret-down"
defaultLabel="Select"
(onChange)="selectDivision($event)"
></p-multiSelect>
и функция:
selectDivision(e) {
this.selectedDivisions = e.value.map((item) => item.name);
if (this.selectedDivisions.length > 3) {
this.selectedItemDisplay = `Selected items: ${this.selectedDivisions.join(', ')}`;
} else {
this.selectedItemDisplay = '';
}
}
Selected items: [object Object],[object Object]
- person Steve   schedule 03.06.2020this.fg.controls['divisions'].value.map(i => i.value).join(', ')
? - person R. Richards   schedule 03.06.2020