TS
(https://github.com/swimlane/ngx-datatable/blob/master/demo/basic/filter.component.ts)
( ). , , , , , , .
HTML
<ngx-datatable
#table
class="material striped scroll-vertical"
[rows]="data"
[columns]="cols"
[columnMode]="'force'"
[headerHeight]="35"
[footerHeight]="35"
[rowHeight]="'auto'"
[limit]="pageSize"
[selectionType]="'single'">
<input type="text" (keyup)='filterDatatable($event)'>
cols = [{name:'First Name'},{name:'Last Name'},{name:'Address'}];
data = [];
filteredData = [];
dummyData = [
{firstName:'Daenarys',lastName:'Targaryen',address:'Dragonstone'},
{firstName:'Sansa',lastName:'Stark',address:'Winterfell'},
{firstName:'Cersei',lastName:'Lannister',address:'Kings Landing'},
{firstName:'Brienne',lastName:'Tarth',address:'Sapphire Island'},
{firstName:'Lyanna',lastName:'Mormont',address:'Bear Island'},
{firstName:'Margaery',lastName:'Tyrell',address:'Highgarden'}
]
ngOnInit(){
this.data = this.dummyData;
this.filteredData = this.dummyData;
}
filterDatatable(event){
let val = event.target.value.toLowerCase();
let colsAmt = this.cols.length;
let keys = Object.keys(this.dummyData[0]);
this.data = this.filteredData.filter(function(item){
for (let i=0; i<colsAmt; i++){
if (item[keys[i]].toString().toLowerCase().indexOf(val) !== -1 || !val){
return true;
}
}
});
this.table.offset = 0;
}