Javascript 角度6过滤器多表列
我有一个包含银行详细信息的表,我想根据搜索字段输入筛选表列中的所有内容。但是它不工作,有人能帮我调试这个问题吗。当我在搜索字段中键入某些内容时,整个表数据就会消失Javascript 角度6过滤器多表列,javascript,angular,typescript,Javascript,Angular,Typescript,我有一个包含银行详细信息的表,我想根据搜索字段输入筛选表列中的所有内容。但是它不工作,有人能帮我调试这个问题吗。当我在搜索字段中键入某些内容时,整个表数据就会消失 <div> <div> <select (change)="OnSelectedCity($event)"> <option *ngFor="let cityObj of cityList" [value]="cityObj.value">{{cityObj.di
<div>
<div>
<select (change)="OnSelectedCity($event)">
<option *ngFor="let cityObj of cityList" [value]="cityObj.value">{{cityObj.displayValue}}</option>
</select>
<input type="text" [(ngModel)]="filterText" [formControl]="filterInput" />
</div>
<div>
<table>
<thead>
<tr>
<th *ngFor="let header of tableHeader">{{header}}</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let bank of bankList | filterdata: filterText">
<td>{{bank.ifsc}}</td>
<td>{{bank.bank_id}}</td>
<td>{{bank.branch}}</td>
<td>{{bank.address}}</td>
<td>{{bank.city}}</td>
<td>{{bank.district}}</td>
<td>{{bank.state}}</td>
</tr>
</tbody>
</table>
</div>
</div>
transform(items: Array<any>, searchText: string): any {
if (searchText !== undefined) {
return items.filter(item => {
const filter = Object.keys(item);
filter.forEach(element => {
if (item[element].toLowerCase().indexOf(searchText.toLowerCase()) === -1) {
return false;
}
return true;
});
});
} else {
return items;
}
}
{{cityObj.displayValue}
{{header}}
{{bank.ifsc}
{{bank.bank_id}
{{银行分行}
{{银行地址}
{{bank.city}
{{银行区}
{{bank.state}
转换(项:数组,搜索文本:字符串):任意{
if(searchText!==未定义){
返回项目。筛选器(项目=>{
常量过滤器=对象键(项);
filter.forEach(元素=>{
if(item[element].toLowerCase().indexOf(searchText.toLowerCase())=-1){
返回false;
}
返回true;
});
});
}否则{
退货项目;
}
}
您的管道中只有一个简单的错误。错误出现在.forEach
调用中,因为无法停止或中断forEach
循环,请参阅
调整后,管道可能如下所示:
transform(items: Array<any>, searchText: string): any {
if (searchText) {
return items.filter(item => {
const filter = Object.keys(item);
// Array.some() returns true if at least one entry meets the given condition
return filter.some(
key => item[key].toLowerCase().indexOf(searchText.toLowerCase()) !== -1
)
});
}
return items;
}
transform(项:数组,搜索文本:字符串):任意{
如果(搜索文本){
返回项目。筛选器(项目=>{
常量过滤器=对象键(项);
//如果至少有一个条目满足给定条件,则Array.some()返回true
返回过滤器(
key=>item[key].toLowerCase().indexOf(searchText.toLowerCase())!=-1
)
});
}
退货项目;
}
检查控制台
可能重复的代码。您应该尝试使用浏览器调试器调试代码,并查看转换方法内部发生的情况。