PrimeNG数据表:自定义过滤器输入

时间:2017-06-02 09:13:13

标签: angular primeng

我需要切换放置在表头中的过滤器输入的可见性。 我试着这样做:

<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

1 个答案:

答案 0 :(得分:5)

您应该将#dt作为变量添加到<p-dataTable>。这会创建一个链接到DataTable实例的模板变量:

plunkr

<p-dataTable ... #dt>

您必须更改keyup方法才能传递正确的值:

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

plunkr

但是,您必须键入整个单词(Apple)才能使其正常工作。但是我把它留给你解决:)