angular - 无法读取未定义的属性 'filter'

标签 angular typescript

我收到如下错误:

Cannot read property 'filter' of undefined.

组件模板:

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

管道代码:

@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 
    });
  }
}

错误原因是什么?

最佳答案

由于传入的数据是 null 并且 filter 方法需要数据,因此,这导致了错误。

这是一个有效的实现:

transform(items: any[], filterQuery: any): any[] {
  if (!filterQuery) return items;
  return items.filter(item => item.whateverProperty.toLowerCase().includes(filterQuery.toLowerCase()));
}

关于angular - 无法读取未定义的属性 'filter',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41992807/

相关文章:

javascript - 没有导出成员 'ROUTER_DIRECTIVES' 。它的替代品是什么?

visual-studio - Visual Studio TypeScript - 找不到模块

javascript - 是否可以将一个简单的 Subject 变成一个 BehaviorSubject?

html - 在 Typescript 中更改列表项的背景

来自 HTTP 调用的 Angular 动态模板

angular - 如何将异步验证器添加到自定义字段?

typescript 编译错误: error TS1109: Expression expected

reactjs - 如何使用 webpack 和 Babel 将 TypeScript/Less 文件编译成 JavaScript/CSS?

javascript - 在 Angular App 中通过 RouterLink 绑定(bind) URL 参数

css - Angular Material2 - 以编程方式设置颜色