I'm working on an angular project I have created a Datatable with sorting/pagination/and filtring but I need filter my table now by one column, for example, I need to filter my table by CIN.
My cpm.ts:
fake_arr: fake[] = [];
displayedColumns: string[] = ['Role', 'Email', 'Fullname', 'CIN', 'Age', 'actions'];
listdata: MatTableDataSource < any > ;
@ViewChild(MatSort, { static: true }) sort: MatSort;
@ViewChild(MatPaginator, null) paginator: MatPaginator;
searchkey: string;
ngOnInit() {
this.service.getUsers().subscribe((arr: fake[]) => {
arr.forEach(element => {
console.log(element);
});
this.listdata = new MatTableDataSource(arr);
this.listdata.sort = this.sort;
this.listdata.paginator = this.paginator;
});
}
onfilterClear() {
this.searchkey = "";
}
applyfilter() {
this.listdata.filter = this.searchkey.trim().toLowerCase();
}
cmp.html:
<div class="mat-elevation-z8">
<mat-table [dataSource]="listdata" matSort>
<ng-container matColumnDef="Role">
<mat-header-cell *matHeaderCellDef mat-sort-header>Role</mat-header-cell>
<mat-cell *matCellDef="let element">{{element.Role}}</mat-cell>
</ng-container>
<ng-container matColumnDef="Email">
<mat-header-cell *matHeaderCellDef mat-sort-header>Email</mat-header-cell>
<mat-cell *matCellDef="let element">{{element.email}}</mat-cell>
</ng-container>
<ng-container matColumnDef="Fullname">
<mat-header-cell *matHeaderCellDef mat-sort-header>Fullname</mat-header-cell>
<mat-cell *matCellDef="let element">{{element.Fname}}</mat-cell>
</ng-container>
<ng-container matColumnDef="CIN">
<mat-header-cell *matHeaderCellDef mat-sort-header>CIN</mat-header-cell>
<mat-cell *matCellDef="let element">{{element.CIN}}</mat-cell>
</ng-container>
<ng-container matColumnDef="Age">
<mat-header-cell *matHeaderCellDef mat-sort-header>Age</mat-header-cell>
<mat-cell *matCellDef="let element">{{element.age}}</mat-cell>
</ng-container>
<ng-container matColumnDef="actions">
<mat-header-cell *matHeaderCellDef></mat-header-cell>
<mat-cell *matCellDef="let row">
<button mat-icon-button>
<div class="tooltip">
<mat-icon>create</mat-icon><span class="tooltiptxt">Éditer</span>
</div>
</button>
<button mat-icon-button color="warn" class="sup">
<div class="tot">
<mat-icon>delete_outline</mat-icon><span class="tottxt">Supprimer</span>
</div>
</button>
</mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
<mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>
</mat-table>
<mat-paginator [pageSizeOptions]="[5, 10, 25, 100]" [pageSize]="5"></mat-paginator>
</div>
Plz guide me how to modify my code to do that