我可以在 ag-Grid 中使用异步值设置器吗(TypeScript 错误)?

leb*_*olo 8 async-await typescript ag-grid

我正在使用带有 TypeScript 的 ag-Grid 并尝试在我的列定义中创建一个异步值设置器

const columnDefs: ColDef[] = [
  {
    headerName: 'Name',
    field: 'name',
    editable: true,
    valueSetter: async (params: ValueSetterParams): Promise<boolean> => {
      return await doSomething(params); // Will return the change boolean
    }
  },
  //...other columns
Run Code Online (Sandbox Code Playgroud)

但是 TypeScript 抱怨这个签名不被支持,因为colDef.d.ts定义文件有

valueSetter?: ((params: ValueSetterParams) => boolean) | string;
Run Code Online (Sandbox Code Playgroud)

但是,如果我只是// @ts-ignore用来忽略 TypeScript 错误,它似乎是在尊重await并且我的代码以正确的顺序执行。

这只是 TypeScript 定义文件的问题吗?还是 ag-Grid 不支持异步值设置器?

一些环境信息:

  • 农业网格 22.1.0
  • 打字稿 3.7.2
  • Aurelia(使用 WebPack、npm 等)
  • 网络风暴 2019.3.1

小智 7

Ag-grid 不提供对此的支持,但您仍然可以完成它。您仍然需要返回一个布尔值,而不是返回承诺。然后,您必须在承诺返回后手动刷新单元格:

valueSetter: (params: ValueSetterParams) => {
  doSomething(params).then(function() {
    params.api.refreshCells({
      rowNodes: [params.node],
      columns: [params.column]
    });
  });
  return false;
}
Run Code Online (Sandbox Code Playgroud)

这是一个示例,我仅使用 asetTimeout来模拟异步操作:https://stackblitz.com/edit/ag-grid-typescript-async-value-setter ?file=src/main.ts