Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular aggrid服务器端分页';无法在格式化行中使用网格来绘制行。_Angular_Ag Grid_Infinite - Fatal编程技术网

Angular 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

我有一个aggrid组件,如下所示:

  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()的调用。我有一个带有两级细节网格的主网格,如果我只展开/收缩几行,在单击之间留下一个健康的停顿,我仍然会得到这个错误。。。。我不知道为什么。