2017-06-02 131 views
2

我需要切換放置在表頭過濾器輸入的可見性。 我試圖做這樣說:PrimeNG datatable:自定義過濾器輸入

<input type="text" 
     class="ui-column-filter ui-inputtext ui-widget ui-state-default ui-corner-all" 
     [value]="dt.filters[col.field] ? dt.filters[col.field].value : ''"    
     (keyup)="dt.onFilterKeyup($event.value,col.field,col.filterMatchMode)" 
     *ngIf="filterIsShown"/> 

https://plnkr.co/edit/o2wLmXHMb1uI5EvBmucr?p=preview

但我有一個錯誤ERROR TypeError: Cannot read property 'filters' of undefined

那麼,我應該得到dt.filters對象?

------修訂-------

感謝PierreDuc的答案,但過濾器仍然無法正常工作:(

我使用的所有參數,因此到模板我發現這裏https://github.com/primefaces/primeng/blob/master/src/app/components/datatable/datatable.ts

這裏的更新plunker
http://plnkr.co/edit/2MWxw0rfcLsDxmuIYRv9?p=preview

+0

不PrimeFace相關,但PrimeNG ... – Kukeltje

回答

4

你應該作爲一個變量添加#dt<p-dataTable>。這將創建一個模板變量鏈接到您的DataTable實例:

plunkr

<p-dataTable ... #dt> 

而且你必須改變你的keyup方法傳遞正確的價值:

(keyup)="dt.onFilterKeyup($event.target.value, col.field, col.filterMatchMode)" 

plunkr

你必須這樣做,然而,鍵入整個單詞(蘋果)爲它的工作。但我留給你,以解決:)

+0

謝謝,但我的過濾器仍然無法正常工作。你知道我需要改變嗎? https://plnkr.co/edit/2MWxw0rfcLsDxmuIYRv9?p=preview – kipris

+0

@kipris更新了我的答案 – PierreDuc

+0

非常感謝! :) – kipris