gpt4 book ai didi

angular - 如何使用 Angular 2 过滤器对表中的多列应用过滤器

转载 作者:太空狗 更新时间:2023-10-29 17:57:31 24 4
gpt4 key购买 nike

我在我当前的项目中使用 angular 2。我正在尝试在我的表中应用多个过滤器选项。您可以引用下面的代码。

在 HTML 模板中:

<table class="table table-condensed table-responsive">
<thead>
<tr>
<td></td>
<td *ngFor="let key of headers">{{key}}</td>
</tr>
<tr>
<td></td>
<td *ngFor="let key of headers; let i=index">
<input type='text' id="{{key}}" (keyup)="filterUser(key)" placeholder="Search User By {{key}}"/>
</td>
</tr>
</thead>
<tbody *ngFor="let user of alluser | userFilter : columnName : listFilter " #someVar>
<tr>
<td><input type="checkbox" class="checkbox" value="{{user.Id}}" (change)="getSelectedUser()" [(ngModel)]="user.IsSelected" /></td>
<td>{{user.UserName}}</td>
<td>{{user.FirstName | uppercase}}</td>
<td>{{user.LastName}}</td>
<td><button type="button" class="btn btn-primary" (click)="editModal.Open(user)">Edit</button></td>
<td><button class="btn btn-primary" (click)='deletemodal.open()'>Delete</button></td>
<td></td>
</tr>
</tbody>
</table>

在过滤器模板中:

export class UserFilterPipe implements PipeTransform {
transform(value: User[], field: string, args: string): User[]{
let filter: string = args ? args.toLocaleLowerCase() : null;
return filter ? value.filter((user: User) =>
user[field].toLocaleLowerCase().indexOf(filter) != -1) : value;
}
}

在组件中:

 filterUser(key) {
debugger;
this.columnName = key;
var v1 = document.getElementById(key).value;
this.listFilter = v1;

}

最佳答案

这可能会有所帮助,可以过滤所有列上的任何表格:

@Pipe({
name: 'tableFilter',
pure: false
})
export class TableFilterPipe implements PipeTransform {
keys = [];
transform(items: any, args: string): any {

if (items != null && items.length > 0) {
let ans = [];

if (this.keys.length == 0) {
this.keys = Object.keys(items[0]);
}

for (let i of items) {
for (let k of this.keys) {
if (i[k].toString().match('^.*' + args +'.*$')) {
ans.push(i);
break;
}
}
}
return ans;
}
}

关于angular - 如何使用 Angular 2 过滤器对表中的多列应用过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41280819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com