I need to filter the table on view load.
For example, I have a table with 5 columns (Woid
, Customer
, AdapterID
, Assignee
, Status
). On load, I want to filter woid
column using 'contains'
. I accomplished filtering onLoad
but when I want to filter again that column later I got an error:
[i]'Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.'[/i]
Program code below...
@ViewChild('dt', { static: true }) dt: any;
ngOnInit() {
this.dt.filter('22', 'woid', 'contains');
}
Also, after filtering via .ts code (woid
filter) and directly in view with <p-columnFilter>
(customer
filter) from PrimeNG Angular collection, I get this JSON. woid property is not an array, unlike custom which is. onFiltering
method and JSON below.
onFiltering(event: any) {
console.log('Filtered value: '+ JSON.stringify(event.filters));
}
{
"woid": {
"value": "22",
"matchMode": "contains"
},
"customer": [{
"value": "2",
"matchMode": "contains",
"operator": "and"
}]
}
I replaced this line of code (in ngAfterContentInit
):
this.dt.filter('22', 'woid', 'contains');
with this:
this.dt.filters['woid'] = [{value: "22", matchMode: "contains", operator: "and"}];
Now it works fine :)
PS. It doesn't work if you're using stateKey
& stateStorage