【问题标题】:PrimeNG - Filter columns in DataTable with empty valuesPrimeNG - 使用空值过滤 DataTable 中的列
【发布时间】:2017-11-27 19:36:43
【问题描述】:

我有这张表,带有复选框过滤器:

<p-dataTable [value]="newCountries" #dt>
  <p-column field="title" header="Name"></p-column>
  <p-column field="alpha_3" header="Code" [filter]="true" filterMatchMode="equals" filterType="checkbox">
      <ng-template pTemplate="filter" let-col>
          <p-checkbox (onChange)="dt.filter('', col.field, col.filterMatchMode)"></p-checkbox>
       </ng-template>
  </p-column>
</p-dataTable>

每当我单击复选框过滤器时,我都想隐藏所有值不是空字符串的行。数据是三个字母的字符串或空字符串。但是,如果我将 '' 作为过滤器的值,它只会显示所有字段。有什么办法可以做到这一点?

【问题讨论】:

    标签: angular primeng primeng-datatable


    【解决方案1】:

    你需要实现一个自定义过滤器并把col.filterMatchMode = 'empty'

    filter.trim() === '' 是默认 equals 过滤模式中的“罪魁祸首”,因为它会为任何值返回 true

    ngOnInit() {
        this.tableRef.filterConstraints['empty'] = (value, filter: any): boolean => {
            if (filter === undefined || filter === null) {
                return true;
            }
    
            if (value === undefined || value === null) {
                return false;
            }
    
            return filter === value; // this includes when filter equals ''
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      相关资源
      最近更新 更多