html - กรองตาราง PrimeNG ตอนเริ่มต้นโดยใช้โค้ด .ts
ฉันต้องกรองตารางเมื่อโหลดมุมมอง
ตัวอย่างเช่น ผมมีตารางที่มี 5 คอลัมน์ (Woid, Customer, AdapterID, Assignee, Status) ตอนโหลด ผมต้องการกรองคอลัมน์ woid โดยใช้ 'contains' ผมสามารถกรองได้เมื่อ onLoad แต่เมื่อผมต้องการกรองคอลัมน์นั้นอีกครั้งในภายหลัง ผมได้รับ error:
[i]'ไม่สามารถหาตัวช่วยเปรียบต่างที่รองรับวัตถุ '[object Object]' ของชนิด 'object' ได้ NgFor รองรับการผูกข้อมูลกับ Iterable เช่น Array เท่านั้น'[/i]
โค้ดโปรแกรมด้านล่าง...
@ViewChild('dt', { static: true }) dt: any;
ngOnInit() {
this.dt.filter('22', 'woid', 'contains');
}
นอกจากนี้ หลังจากกรองผ่านโค้ด .ts (woid filter) และโดยตรงในมุมมองด้วย <p-columnFilter> (customer filter) จากคอลเลกชัน PrimeNG Angular ฉันได้รับ JSON นี้ property woid ไม่ใช่อาเรย์ ไม่เหมือน custom ที่เป็นอาเรย์ onFiltering method และ JSON ด้านล่าง
onFiltering(event: any) {
console.log('Filtered value: '+ JSON.stringify(event.filters));
}
{
"woid": {
"value": "22",
"matchMode": "contains"
},
"customer": [{
"value": "2",
"matchMode": "contains",
"operator": "and"
}]
}
คำตอบ #1
ฉันได้แทนที่บรรทัดโค้ดนี้ (ใน ngAfterContentInit):
this.dt.filter('22', 'woid', 'contains');
ด้วยสิ่งนี้:
this.dt.filters['woid'] = [{value: "22", matchMode: "contains", operator: "and"}];
ตอนนี้มันใช้งานได้ดีแล้ว :)
ป.ล. มันจะไม่ทำงานถ้าคุณกำลังใช้ stateKey และ stateStorage
