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>
Другие вопросы по тегам