Unable to read property filter undefined

My template is as follows:

:

    <input #input placeholder="Search" id="search">
    <div class="item" *ngFor="let item of data | searchPipe: input.value">
      {{item}}
    </div>

and I have a component for SearchPipe

@Pipe({
  name: 'searchPipe',
  pure: false
})
export class SearchPipe implements PipeTransform {
  transform(data: any[], searchTerm: string): any[] {
      searchTerm = searchTerm.toUpperCase();
      return data.filter(item => {
        return item.toUpperCase().indexOf(searchTerm) !== -1 
      });
  }
}

what is the problem?

+4
source share
2 answers

The input was null and the filter method was expecting data, which caused an error.

transform(items: any[], filterQuery: any): any[] {
        if (!filterQuery) return items;
        return items.filter(function(item){
            return item.whateverProperty.toLowerCase().includes(filterQuery.toLowerCase());
        })
    }
+4
source

Try the following:

export class SearchPipe implements PipeTransform {
  transform(data: any[], searchTerm: string): any[] {
    if(!data) return [];
    searchTerm = searchTerm.toUpperCase();
    return data.filter(item => {
      return item.toUpperCase().indexOf(searchTerm) !== -1 
    });
  }
}
+1
source

Source: https://habr.com/ru/post/1668572/


All Articles