【发布时间】:2020-04-19 02:42:12
【问题描述】:
我有一个 ag-grid 表,我将一些对象作为数据传递。我想添加一些自定义过滤器。下面是我的问题的一个非常简化的版本。
我有一个接口VersionInfo,它代表我传递给网格的对象。
export interface VersionInfo {
version: number;
// more fields here...
}
然后我指定网格的架构并添加一些数据:
columnDefs = [
{
headerName: 'Version',
field: 'version',
filter: 'agNumberColumnFilter',
comparator: (a, b) => b.version - a.version,
cellRenderer: (params: ICellRendererParams) => {
return `Custom rendering ${params.data.version.version}`;
}
}
];
rowData = [
{ version: {version: 3} },
{ version: {version: 5} },
{ version: {version: 8} }
];
HTML 如下所示:
<ag-grid-angular
style="width: 500px; height: 200px;"
class="ag-theme-alpine"
[rowData]="rowData"
[columnDefs]="columnDefs">
</ag-grid-angular>
除了comparator,一切都运行良好。我会假设它会以相反的顺序对表格进行排序,但没有发生任何事情,我只是得到rowData 中指定的表格,并且一旦将某些内容写入过滤器字段,所有条目都会被过滤。如前所述,这是一个简化版本,但问题是一样的。
【问题讨论】:
-
那么过滤是否正常工作,只是排序不工作?您是否希望网格开始按版本列排序,在这种情况下您想使用
sort选项? -
@MattNienow 在示例中,过滤和排序都不起作用。我的问题是如何为复杂对象添加这些功能。默认情况下,数字和字符串等原始数据类型似乎工作得很好。如果我尝试在比较器函数中添加
console.log,它永远不会被触发。 -
我现在明白了。使用@LuDeveloper 下面提到的
valueGetter将帮助您进行排序。然后我认为您还需要将其提供给过滤器参数:stackoverflow.com/questions/43893083/…
标签: angular ag-grid ag-grid-angular