Jan*_*rlU 3 primeng angular primeng-datatable p-table
PRIMENG 是 Angular 的组件库,我目前正在使用他们的p-table
组件来显示数据库中的数据。表中显示的一列包含一个布尔值,我希望true
该列过滤器有一个默认值。
下面是该表的 HTML 示例:
<p-table class="my-table"
[value]="(myValues$ | async)!"
[scrollable]="true"
scrollHeight="flex"
[virtualScroll]="true"
selectionMode="single">
<ng-template pTemplate="header">
<tr>
<th>
Some Boolean
<div>
<!--
How can I set the filter to only show
items where someBoolean == true by default?
-->
<p-columnFilter type="boolean" field="someBoolean"></p-columnFilter>
</div>
</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-val>
<tr [pSelectableRow]="val">
<td>
<i class="pi" [ngClass]="{'true-icon pi-check': val.someBoolean, 'false-icon pi-times': !val.someBoolean}"></i>
</td>
</tr>
</ng-template>
</p-table>
Run Code Online (Sandbox Code Playgroud)
该属性myValues$
是一个Observable<MyValue[]>
并且MyValue
类似于:
export interface MyValue {
someBoolean: boolean;
}
Run Code Online (Sandbox Code Playgroud)
如何将过滤器设置为仅显示 所在位置的someBoolean
项目true
?
几年前,有人提出了完全相同的问题,但没有人愿意回答,所以我又问了一次。
我尝试在 PRIMENG 文档中查找任何default
或value
属性,但一无所获。作为一种解决方法,我对从数据库返回的数据进行了预先排序,如下所示:
myValues$: Observable<MyValue[]> = getData().pipe(
// Sorts by 'someBoolean' where 'true' comes before 'false'
map(mvs => [...mvs].sort((a, b) => a.someBoolean < b.someBoolean ? 1 : -1))
);
Run Code Online (Sandbox Code Playgroud)
但这当然仍然显示所有数据(只是排序)。如果我可以使用列过滤器的默认值来仅someBoolean
显示is 的数据,我会更喜欢它true
。
可以使用以下属性设置默认过滤器状态Table.filters
:
import { FilterMetadata } from "primeng/api";
...
readonly filters: { [key in keyof MyValue]: FilterMetadata[] } = {
someBoolean: [{ value: true, matchMode: "contains", operator: "and" }]
};
Run Code Online (Sandbox Code Playgroud)
<p-table ... [filters]="filters">
...
</p-table>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4649 次 |
最近记录: |