Angular aggrid服务器端分页';无法在格式化行中使用网格来绘制行。
我有一个aggrid组件,如下所示:Angular aggrid服务器端分页';无法在格式化行中使用网格来绘制行。,angular,ag-grid,infinite,Angular,Ag Grid,Infinite,我有一个aggrid组件,如下所示: private gridOptions = { columnDefs: this.columnDefs, frameworkComponents: { buttonRenderer: ButtonRenderer}, pagination: true, paginationPageSize: 20, cacheBlockSize: 20, // server side paging rowMode
private gridOptions = {
columnDefs: this.columnDefs,
frameworkComponents: { buttonRenderer: ButtonRenderer},
pagination: true,
paginationPageSize: 20,
cacheBlockSize: 20,
// server side paging
rowModelType: 'infinite',
datasource: this.dataSource
};
private dataSource: IDatasource = {
getRows: (params: IGetRowsParams) => {
var query = { startrow: params.startRow,
endrow: params.endRow,
company_name: this.companyName,
company_address: this.companyAddress,
company_capital: this.companyCapital
};
this.http.post(environment.api_url + "/register/search",query).subscribe((results:any) => {
params.successCallback(results.data, results.totalRecords);
this.gridApi.refresh();
});
}
};
当aggrid首次加载时,它会正常显示。如果按“下一页”,则会出现以下错误:
错误错误:“AgGrand:当网格处于绘制行的中间时,不能得到网格来绘制行。当网格处于渲染阶段时,您的代码可能称为网格API方法。要克服这个问题,将API调用放入超时,例如API。。要查看导致刷新的代码部分,请检查此stacktrace。“
有什么例子可以参考吗?我到处找了找,但是没有这个每个人看起来都很好 问题顺便说一句:我使用的是angular 8,aggrid 22.1.1,正如@Vincemt Chen评论中所述
谢谢你的回答。对我来说,这是一个valueFormatter问题。如果我从列定义中删除valueFormatter,一切正常。当我检查chrome控制台时,我看到格式化程序函数未定义单元格值。我不知道如何修复它,所以我删除了所有valueFormatter。从那以后一切都很好 这也发生在我身上,因此我没有删除有用的
valueFormatter
,而是添加了检查params.value
是否未定义的。例如:
{
headerName: "first cell",
field: "first field",
valueFormatter: (params) => {
if(!params.value) return 'ERROR';
...your original code...
}
}
我猜您不应该在调用successCallback之后调用网格的refresh()方法,这可能也会触发刷新。如果您确实需要调用refresh(),请尝试在setTimeout()中调用。谢谢您的回答。对我来说,这是一个valueFormatter问题。如果我从列定义中删除valueFormatter,一切正常。当我检查chrome控制台时,我看到格式化程序函数未定义单元格值。我不知道如何修复它,所以我删除了所有valueFormatter。在那之后一切都很好。有一个技巧-我发现组件向网格公开的函数(ValueGetter、ValueSetter、valueFormatters等)必须是Lambdas(“胖箭头函数”),而不仅仅是组件的普通方法。Lambda绑定了“this”,而普通方法没有。agGrid 24.1也有这个问题,我的Angular代码没有任何valueFormatter或对refresh()的调用。我有一个带有两级细节网格的主网格,如果我只展开/收缩几行,在单击之间留下一个健康的停顿,我仍然会得到这个错误。。。。我不知道为什么。