html - Filtriraj PrimeNG tablicu prilikom inicijalizacije koristeći .ts kod


Trebam filtrirati tablicu pri učitavanju prikaza.

Na primjer, imam tablicu s 5 stupaca (Woid, Customer, AdapterID, Assignee, Status). Prilikom učitavanja želim filtrirati stupac woid koristeći 'contains'. Uspio sam filtrirati onLoad, ali kada želim ponovno filtrirati taj stupac kasnije, dobivam grešku:

[i]'Ne može se pronaći razlika koja podržava objekt '[object Object]' tipa 'object'. NgFor podržava vezanje samo za Iterables kao što su nizovi.'[/i]

Programski kod ispod...

@ViewChild('dt', { static: true }) dt: any;
ngOnInit() {
    this.dt.filter('22', 'woid', 'contains');
}

Također, nakon filtriranja putem .ts koda (woid filter) i izravno u prikazu s <p-columnFilter> (customer filter) iz PrimeNG Angular kolekcije, dobivam ovaj JSON. Svojstvo woid nije niz, za razliku od custom koji jest. onFiltering metoda i JSON ispod.

onFiltering(event: any) {
    console.log('Filtered value: '+ JSON.stringify(event.filters));
}


{
    "woid": {
        "value": "22",
        "matchMode": "contains"
    },
    "customer": [{
        "value": "2",
        "matchMode": "contains",
        "operator": "and"
    }]
}

Odgovor #1

Zamijenio sam ovaj redak koda (u ngAfterContentInit):

this.dt.filter('22', 'woid', 'contains'); 

s ovim:

this.dt.filters['woid'] = [{value: "22", matchMode: "contains", operator: "and"}];

Sada radi dobro :)

PS. Ne radi ako koristite stateKey i stateStorage