本文介绍了我可以在AG-Grid中使用异步值设置器(打字错误)吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将agGrid与TypeScrip一起使用,并尝试在我的列定义中创建一个异步value setter

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

但TypeScrip抱怨不支持此签名,因为colDef.d.ts定义文件有

valueSetter?: ((params: ValueSetterParams) => boolean) | string;

但是,如果我只是使用// @ts-ignore忽略打字错误,它似乎是在遵守await,并且我的代码以正确的顺序执行。

只是打字定义文件的问题吗?或者,AG-Grid不支持异步值设置器?

一些环境信息:

  • AG-Grid 22.1.0
  • 打字稿3.7.2
  • Aurela(使用webpack、NPM等)
  • WebStorm 2019.3.1

推荐答案

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

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

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

这篇关于我可以在AG-Grid中使用异步值设置器(打字错误)吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 02:06