我正在使用PrimeNG,并将全局过滤器添加到我的表中:
<input #gb type="text" pInputText size="50" placeholder="Filter">
数据表:
<p-dataTable *ngIf="users != null && users.length > 0" [value]="users" loadingIcon="fa-spinner" [globalFilter]="gb">
我需要发送邮件给已经过滤的用户。但是,我注意到用户计数(用户数)不会在过滤器上更新。
根据表中的筛选器正确显示记录,但是邮寄这些用户会将邮件发送给从DB检索的所有用户。
是否有一种使用PrimeNG过滤器选项更新实际用户数量的方法?
发布于 2017-11-08 19:00:52
DataTable
组件有一个名为filteredValue
的变量,过滤后的值存储在该变量中。有两种获得筛选值的方法:
第一条路
您可以使用ViewChild
获取对DataTable
对象的引用,并获取您筛选的用户:
模板
<p-dataTable #dataTable *ngIf="users != null && users.length > 0" [value]="users" loadingIcon="fa-spinner" [globalFilter]="gb">
组件
import { Component, ViewChild } from '@angular/core';
import { DataTable } from 'primeng/primeng';
@ViewChild('dataTable')
dataTable: DataTable;
既然您已经引用了DataTable
组件,就很容易获得过滤用户:
printFilteredUsers() {
console.log(this.dataTable.filteredValue);
}
第二条路
DataTable
组件有名为onFilter
的事件,每次过滤DataTable
的内容时都会触发该事件:
模板
<p-dataTable *ngIf="users != null && users.length > 0"
[value]="users" loadingIcon="fa-spinner" [globalFilter]="gb"
(onFilter)="printFilteredUsers($event)">
组件
printFilteredUsers(event: any) {
console.log(event.filteredValue); // filtered users
console.log(event.filters); // applied filters
}
PrimeNG的DataTable
已经有了很好的文档,我建议你检查一下。你可以这样做,这里。
https://stackoverflow.com/questions/47185499
复制相似问题