[英]AG-Grid custom filter (Angular) - how to get row data inside OnNewRowsLoaded()
目前正在为 AG-Grid 开发一个自定义过滤器,并且大部分时间都在工作,保存新行的加载时间。我希望能够查看加载了哪些行,以便更新自定义过滤器内的数据。 我尝试使用 IFilterParams.rowModel.forEachNode(),但无济于事。 这是我所看到的内容:
export class MyCustomFilter implements IFilterAngularComp {
// (...)
agInit(params: IFilterParams): void {
this.params = params;
}
onNewRowsLoaded() {
console.log("new_rows_loaded_start");
this.params.rowModel.forEachNode((n) => {
console.log("test");
});
console.log("new_rows_loaded_end");
}
// (...)
}
在加载了一些新行之后,这是我在控制台 output 中看到的内容:
new_rows_loaded_start
new_rows_loaded_end
请注意那里没有任何“测试”条目。 如果我在其他任何地方(onNewRowsLoaded() 方法之外)执行 params.rowModel.forEachNode(),它会打印出适当数量的“测试”条目。 我一直依靠 forEachNode() 来获取过滤器内网格的 state,所以我的问题如下:
事实证明,如果我们想遍历onNewRowsLoaded()
方法中的现有行,我们不应该使用this.params.rowModel.forEachNode()
相反,我们应该使用:
this.params.api.forEachLeafNode()
这是因为params.rowModel.forEachNode()
依赖于现有的组/过滤器数据,因此在过滤器方法中调用它会导致一些问题,从而导致方法静默失败。 值得庆幸的是, params.api.forEachLeafNode()
不依赖于组或过滤器,所以我们很适合在这种情况下使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.