代码之家  ›  专栏  ›  技术社区  ›  hdc

array.filter不返回筛选结果

  •  0
  • hdc  · 技术社区  · 5 年前

    在我的angular 6应用程序中,我正在列表中搜索,所以在HTML中我有下面的代码。

    <li *ngFor="let c of listName | search: searchText ; let i = index;" class="advance-list-heading" >
                                  <span *ngIf = "i==0" class="test">My List</span>
                                  <ul class="advance-list-treeview">
                                    <li (click)="SetValue(c.name)">
                                  class="row"> -->
                                    <span *ngIf="c.name; else noresult">{{c.name}}</span>
                                    <!-- </div>  -->
                                    </li>
                                    </ul>
                              </li>
    

    当我从搜索结果中选择任何一个值时,我想筛选已经可用的结果。所以我在.ts文件中有下面的函数

    SetValue(SelectedList:string) {
          this.inputField.nativeElement.value= SelectedList
          this.divVisible = false;
          return this.listName.filter((x: any) => x.name.toLowerCase().startsWith(SelectedList.toLowerCase()))
          // this.ref.detectChanges
          // console.log(this.listName)
    
        }
    

    然而,页面中的现有列表未得到筛选。有人可以在此帮助我吗?

    1 回复  |  直到 5 年前
        1
  •  1
  •   JefferinJoseph    5 年前

    return this.listName.filter((x: any) => x.name.toLowerCase().startsWith(SelectedList.toLowerCase()))
    

    尝试

    this.listName = this.listName.filter((x: any) => x.name.toLowerCase().startsWith(SelectedList.toLowerCase()))
    

    ngOnInit(){
    const response = this.getData();
    this.completeList = responsee;
    this.listName = this.completeList;
    }
    

    然后

    SetValue(SelectedList:string) {
          this.inputField.nativeElement.value= SelectedList
          this.divVisible = false;
          this.listName = this.completeList.filter((x: any) => x.name.toLowerCase().startsWith(SelectedList.toLowerCase()));
        }
    
    推荐文章