Angular ng-select: selectedItems.map не является функцией
Когда я использую ng-select в реактивной форме angular, я получаю эту ошибку:
ОШИБКА TypeError: selectedItems.map не является функцией
У меня есть 3 выбора, первые два работают очень хорошо, но в этом третьем я получаю ошибку! для отображения элемента я использую функцию (ng-select находится внутри *ngFor):
//for mappinig item :
mapLabelValueBS(objet) {
return objet.map(data => {
return {
id: data,
text: data.name
}
})
}
//this is the one that is causing the problem
<ng-select
[allowClear]="true"
[items]="mapLabelValueBS(filieres)"
placeholder="Filière non sélectionné"
(selected)="selecteFiliere($event)"
formControlName="filiere">
</ng-select>
результат на моей странице (когда я нажимаю на поле, он удваивается):
5 ответов
Эта ошибка возникла, когда я передавал [items]="value", где значение не было массивом, поэтому проверьте, не передаете ли вы элемент, не являющийся массивом, в привязку элементов.
Без кода это сложно узнать, но сегодня у меня была такая же ошибка. Причина была в том, что я определил значение по умолчанию в FormControl, которое не имело отношения к массиву, который требует ng-select. Когда FormGroup загрузилась, и это ошибочное значение по умолчанию было загружено в ng-select, была выбрана ошибка. Элемент.map не является функцией
Вы пытаетесь привязать элементы объектного типа. Атрибут [items] принимает массив. Вы можете попробовать добавить ключевое значение канала
<ng-select
[allowClear]="true"
[items]="jsonData | keyvalue"
placeholder="Filière non sélectionné"
(selected)="selecteFiliere($event)"
formControlName="filiere">
</ng-select>
Несколько дней назад я столкнулся с этой ошибкой, если вы привязываете список, который заполняется с внутреннего сервера, обязательно заполните список с помощью метода concat, подобного этому
this.userService.getLookup().subscribe((res: any) => {
this.apps = this.apps.concat(res.data);
});
У меня была такая же проблема, потому что список элементов был неопределенным где-то в середине подготовки страницы, поэтому я добавил глупое условие, чтобы показывать выбранные только тогда, когда список элементов готов:
<ng-select
*ngIf="selectedItems.map"
[allowClear]="true"
[items]="jsonData | keyvalue"
placeholder="Filière non sélectionné"
(selected)="selecteFiliere($event)"
formControlName="filiere">
</ng-select>