Angular 从 api 加载农业网格数据

Angular ag-grid data loading from api

我现在正在进行一个项目,从 api 获取数据并显示在 angular ag-grid 中。问题是从 api 获取数据需要很长时间。使用邮递员进行测试时,最多需要 5-15 秒才能收到回复。我想到了使用延迟加载来单独请求每个页面的数据。

但是,我可能不得不一次又一次地重新调用 api 以在每个页面中显示数据,并且在排序和筛选时会出现问题。我尝试搜索教程示例,但所有示例都使用项目中已有的 rowData 进行了测试。对我来说,我必须向 api 请求。我该怎么办?是api那边的问题吗?

目前,我想将 api 的数据请求分为两个阶段。起初,我只会从 api 请求大约 20 行数据并将其显示在 ag-grid 中。一旦数据加载到屏幕上,在后台,将进行新的 api 调用以调用所有数据,然后更新 ag-grid。有什么方法可以在 rowData 中的数据发生变化时立即自动更新 ag-grid?有什么方法可以推荐吗?

P.S。我们还创建了 api 所以可以创建新的 api.

您可以使用 ag-grid 的 Infinite Row Model 功能实现此目的。只需查看文档即可清楚地了解如何配置它。我将引导您完成一些基本步骤,以使您了解如何实现它。

第一步,您需要在 gridOptions 中配置以下属性以及其他选项。

{
  rowModelType: 'infinite',
  cacheBlockSize: 20,
  datasource: myDataSource
}

这里的 cacheBlockSize 设置为 20,因为您从 API 中将请求页面行计数为 20。您可以根据自己的需要进行配置。

由于您使用的是无限行模型,因此您不能直接设置网格数据,而是需要使用数据源。

const myDataSource: IDatasource = {
    rowCount: null,
    getRows: (params: IGetRowsParams) => {
        yourApiRequestService.subscribe((data) => {
            let lastRow = -1;
            if (data.length <= params.endRow) {
                lastRow = data.length;
            }

            params.successCallback(data, lastRow);
        });
    }
};

我已经在提供的 gridOptions 中将此 myDataSource 设置为数据源 属性。

配置这些将使网格在需要显示时自动获取数据。希望这个回答对您有所帮助。