I am using angular 2 in my current project. And I'm trying to apply several filter options in my table. You can link below the code.
In the HTML template:
<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>
In Filter Templete:
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; } }
In component:
filterUser(key) { debugger; this.columnName = key; var v1 = document.getElementById(key).value; this.listFilter = v1; }
source share