angular - 如何在其各自的列中显示数据并按名称过滤,保持 Angular 中每一行的名称和年龄一致?
问题描述
过滤器.pipe.ts
@Pipe({
name: 'filter'
})
export class FilterPipe implements PipeTransform {
transform(items: any[], searchText: string): any[] {
if(!items) return [];
if(!searchText) return items;
searchText = searchText.toLowerCase();
return items.filter( it => {
return it.toLowerCase().includes(searchText);
});
}
}
在这里我收到一个错误,例如“错误类型错误:it.toLowerCase 不是函数”
app.component.ts
@Component({
selector: 'my-app',
templateUrl: './app.component.html'
})
export class AppComponent {
name = 'Angular';
characters = [
{name:'Finn the shark',age:'10'},
{name:'Jake the dog',age:'4'},
{name:'Princess Bubble gum',age:'1'}
];
}
我想使用这样的数组,而不是:characters=['Finn the shark','Jake the dog','Princess Bubble gum'];
HTML
<input [(ngModel)]="searchText" placeholder="search text goes here">
<table>
<tr>
<th>Characters</th>
<th>Age</th>
</tr>
<tr *ngFor="let c of characters | filter : searchText let i = index">
<th>{{characters[i].name}}</th>
<th>{{characters[i].age}}</th>
</tr>
</table>
表按预期填充,但是过滤器不起作用:(
解决方案
当项目为空或为空时会发生这种情况,请添加检查
if(items && items.length > 0){
return items.filter( it => {
return it.toLowerCase().includes(searchText);
});
}
推荐阅读
- nginx - 如何在 nginx 中将 https 重定向到 http
- css - 是否可以使用引导程序 4 类设置 css 属性顶部、底部、左侧和右侧?
- customization - 如何在 Acumatica 的案例模块中添加可搜索的 InventoryID(用户定义字段)?
- python - Python Flask:用户下载抓取的图像
- linux - Linux管道读/写总是会导致上下文切换吗?
- c# - 如何使默认值突出显示或集中在下拉列表列表中
- python - 如何在 Gurobi 中正确实现成本最小化目标函数?
- python - 比较数据框中的多列并生成相似度矩阵
- android - 如何在不通过蓝牙确认对话框的情况下使我的设备能够被附近的设备发现?
- c# - 将文档插入到 ES 中需要多长时间才能正确搜索?