代码之家  ›  专栏  ›  技术社区  ›  Chris Pickford

当绑定到array.filter()时,ng select将无响应。

  •  0
  • Chris Pickford  · 技术社区  · 5 年前

    装订时 ng-select 结果的组件 Array.filter() ,从下拉列表中选择一个选项会导致页面失去响应。

    是否有正确的方法绑定到已筛选的项数组?

    StackBlitz example

    import { Component } from '@angular/core';
    
    interface IListItem {
      id: number;
      name: string;
    }
    
    @Component({
      selector: 'my-app',
      template: `
    <ng-select
      [items]="items"
      bindLabel="name"
      placeholder="Select item..."
      [(ngModel)]="selectedItem">
    </ng-select>`
    })
    export class AppComponent  {
    
      private readonly _items: IListItem[] = [
        { id: 1, name: "One" },
        { id: 2, name: "Two" },
        { id: 3, name: "Three" },
        { id: 4, name: "Four" },
        { id: 5, name: "Five" },
        { id: 6, name: "Six" },
        { id: 7, name: "Seven" },
        { id: 8, name: "Eight" },
        { id: 9, name: "Nine" },
        { id: 10, name: "Ten" }
      ];
    
      get items(): IListItem[] {
        return this._items.filter(i => i.id % 2 === 0);
      }
    
      selectedItem: IListItem;
    }
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   Sajeetharan    5 年前

    不要将函数与ng select一起使用,它每次都会被调用,这会使您的UI没有响应。而是将筛选结果赋给变量,

    filteredItems  =   this._items.filter(i => i.id % 2 === 0);
    

    STACKBLITZ DEMO

    推荐文章