Angular ng-select : selectedItems.map 不是函数

Angular ng-select : selectedItems.map is not a function

当我以反应形式使用 ng-select 时 angular 我收到此错误:

ERROR TypeError: selectedItems.map is not a function

我有 3 个 select 前两个工作得很好,但在第三个中我得到了错误!映射项目我正在使用函数(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>

我页面中的结果(当我单击该字段时它会自动翻倍):

没有代码很难知道,但今天我有同样的错误。原因是我在 FormControl 中确定了一个与 ng-select 要求的数组无关的默认值。当加载FormGroup时,这个错误的默认值被加载到ng-select中,错误是selectedItems.map is not a function

几天前我遇到了这个错误,如果你绑定一个从后端服务器填充的列表,一定要使用这样的 concat 方法填充列表

   this.userService.getLookup().subscribe((res: any) => {
        this.apps = this.apps.concat(res.data);
    });

这个错误是在我传递 [items]="value" 时出现的,其中值不是数组,所以请检查您是否没有将非数组元素传递给项目绑定。

您正在尝试绑定对象类型的。 [items] 属性接受一个数组。您可以尝试添加管道 keyvalue

<ng-select 
  [allowClear]="true"                                                 
  [items]="jsonData | keyvalue"
  placeholder="Filière non sélectionné"                                             
  (selected)="selecteFiliere($event)"                                                     
  formControlName="filiere">
</ng-select>

我有同样的问题,因为项目列表在页面准备过程中的某个时候是未定义的,所以我添加了一个愚蠢的条件来显示那些 select 仅当项目列表准备就绪时:

<ng-select 
  *ngIf="selectedItems.map"
  [allowClear]="true"                                                 
  [items]="jsonData | keyvalue"
  placeholder="Filière non sélectionné"                                             
  (selected)="selecteFiliere($event)"                                                     
  formControlName="filiere">
</ng-select>