使用PrimeNG过滤时更新实际值

时间:2017-11-08 16:59:32

标签: angular primeng primeng-datatable

我正在使用添加到我的表中的全局过滤器的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">

我需要向已过滤的用户发送邮件。但是我注意到用户数量(用户数量)在过滤时没有更新。

根据表格中的过滤器正确显示记录,但邮寄这些用户会将邮件发送给从数据库检索到的所有用户。

有没有办法在使用PrimeNG过滤器选项过滤时更新实际用户的金额?

1 个答案:

答案 0 :(得分:4)

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已有详细记录,我建议您查看。你可以here