我在Angular 5中使用PrimeNG 6.0.2,并且 Table 插件出现问题。我改用Table了,因为不推荐使用DataTable。现在,我无法像以前那样访问过滤后的值。
假设我通过ViewChild在组件中定义了表格:
@ViewChild('myTable') dataTable: Table;
使用DataTable,我可以访问保存排序和过滤后的数据的 _value 属性:
dataTable._value[index] = ...;
但是现在,该属性仅保留排序后的数组,而我必须使用 filteredValue 属性:
dataTable.filteredValue[index] = ...;
我的问题是 filteredValue 在进行任何过滤之前为undefined
,在对表进行过滤时具有值,而在删除所有过滤器文本之后为null
。这产生了一些非常丑陋的代码。
是否可以访问当前数据(排序,过滤或与起始数组相同)?还是我必须采用这种方法?
答案 0 :(得分:2)
访问过滤值的另一种方法是声明onFilter
事件,然后检索/存储过滤值。
// on your component class declare
onFilter(event, dt) {
this.filteredValuess = event.filteredValue;
}
<p-table #dt .... (onFilter)="onFilter($event, dt)">
答案 1 :(得分:1)
我知道这是一个很晚的答案,但是对于其他任何有此问题的人,您都可以在表本身上使用table.hasFilter()
函数并根据要访问的属性来决定。也会产生很多开销,但对我来说,感觉比做!!table.filteredValue
要干净得多。