ค้นหาเว็บไซต์

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