Saj*_*ran 13 typescript angular
我收到如下错误:
Cannot read property 'filter' of undefined.
Run Code Online (Sandbox Code Playgroud)
组件模板:
<input #input placeholder="Search" id="search">
<div class="item" *ngFor="let item of data | searchPipe: input.value">
{{item}}
</div>
Run Code Online (Sandbox Code Playgroud)
管道代码:
@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
});
}
}
Run Code Online (Sandbox Code Playgroud)
是什么导致错误?
Sha*_*lya 11
由于传入的数据是null并且该filter方法期望数据,因此,这导致了错误.
这是一个有效的实现:
transform(items: any[], filterQuery: any): any[] {
if (!filterQuery) return items;
return items.filter(item => item.whateverProperty.toLowerCase().includes(filterQuery.toLowerCase()));
}
Run Code Online (Sandbox Code Playgroud)
尝试这个:
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
});
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43101 次 |
| 最近记录: |