首页 > 解决方案 > 对象输入的 PrimeNG 数据表自定义过滤器

问题描述

我有一个带有动态列的 PrimeNG 数据表,我想为这些列添加一个过滤器来过滤值。

这是我的带有过滤器的数据表列:

    <p-column *ngFor="let param of searchFilters" [style]="{'width':'auto'}" header="{{param.name}}"
              [filter]="true" filterPlaceholder="Search">
        <ng-template pTemplate="filter" let-col>
            <input type="text" (keyup)="dt.onFilterKeyup($event.target.value, param.name, 'contains')"/>
        </ng-template>
        <ng-template let-col let-user="rowData" pTemplate="body">
          <span>
             {{getUserAttributeCaseInsensitive(user.attributes, param.name)}}
          </span>
        </ng-template>
    </p-column>

代表数据表数据的我的用户对象看起来像这样:

User {
    id?: number;
    attributes?: Object;
}

在此属性对象中,您可以找到每一列的值。用于*ngFor构建每一列的 searchFilters 是动态构建的,并不总是包含属性对象包含的所有内容。现在因为它是一个对象,所以我无法设置field="attribute[param.name]"(从*ngFor)。所以我尝试了一个也不起作用的自定义过滤器。

有人可以帮忙吗?

标签: angularprimengprimeng-datatable

解决方案


推荐阅读