过滤后的数据未按角度刷新

问题描述 投票:0回答:1

我正在尝试根据姓氏过滤对象数组。

 filterItems(searchTerm) {
    return this.EmpData.filter(emp => {
      return emp.lastName.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1 || driver.firstName.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1;
    });
  }

和html模板中

 <ion-list *ngIf="showEmpList">
                <ion-item *ngFor="let item of EmpData" button (click)="selectEmp(item.lastName)">
                    <ion-label>{{item.lastName}}, {{item.middle}}, {{item.firstName}}</ion-label>
                </ion-item>
     </ion-list>

这在我在搜索框中输入名称但在从名称中删除字符时,结果不会刷新新数据,这是可行的。例如-我有数据=[{name:'Amir','age':28},{name:'AAmir', age:26},{name:'AAAmir', age:30}]现在,如果我在搜索框中输入AA,它将显示最后两个结果,如果我输入AAA,则如果我从输入字段中删除两个或更多字符,假设新输入为A,则现在仅显示最后一个emp数据,结果显示为仅最后一个雇员数据

请帮助。提前感谢

angular ionic3 ionic4
1个回答
0
投票

可能是您过滤的数组指向与原始数组相同的数组,这就是您要更改原始数组的原因。我已经为相同的代码做了一些:-

Stackblitz URL:-https://stackblitz.com/edit/ionic-gqingy

HTML:-

 <input type="text" [(ngModel)]="filterText" (ngModelChange)="filterValues()"/>

 <ion-list>
                <ion-item *ngFor="let item of filteredData" button (click)="selectEmp(item.lastName)">
                    <ion-label>{{item.name}}, {{item.age}}</ion-label>
                </ion-item>
     </ion-list>

TS:-

import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';

import { TabsPage } from '../pages/tabs/tabs';

@Component({
  templateUrl: 'app.html'
})
export class MyApp {
  rootPage:any = TabsPage;
  EmpData = [{name:'Amir',age:28},{name:'AAmir', age:26},{name:'AAAmir', age:30}];
  filteredData = [{name:'Amir',age:28},{name:'AAmir', age:26},{name:'AAAmir', age:30}];
  public filterText: string = '';
  constructor(platform: Platform) {
    platform.ready().then(() => {
      // Okay, so the platform is ready and our plugins are available.
      // Here you can do any higher level native things you might need.

    });
  }

  public filterValues() {
    this.filteredData = this.EmpData.filter((data) => data.name.toLowerCase().includes(this.filterText? this.filterText.toLowerCase():''));
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.