typescript - 我可以在 ag-Grid 中使用异步值设置器(TypeScript 错误)吗?
问题描述
我正在将 ag-Grid 与 TypeScript 一起使用,并尝试在我的列定义中创建一个异步值设置器。
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
但是 TypeScript 抱怨不支持这个签名,因为colDef.d.ts
定义文件有
valueSetter?: ((params: ValueSetterParams) => boolean) | string;
但是,如果我只是// @ts-ignore
用来忽略 TypeScript 错误,它似乎是在尊重await
我的代码以正确的顺序执行。
这只是 TypeScript 定义文件的问题吗?还是 ag-Grid 不支持异步值设置器?
一些环境信息:
- 农业网格 22.1.0
- 打字稿 3.7.2
- Aurelia(使用 WebPack、npm 等)
- 网络风暴 2019.3.1
解决方案
Ag-grid 不为此提供支持,但您仍然可以完成它。您仍然必须返回一个布尔值,而不是返回承诺。然后你必须在承诺返回后手动刷新单元格:
valueSetter: (params: ValueSetterParams) => {
doSomething(params).then(function() {
params.api.refreshCells({
rowNodes: [params.node],
columns: [params.column]
});
});
return false;
}
这是一个示例,我只使用 asetTimeout
来模拟异步操作:https ://stackblitz.com/edit/ag-grid-typescript-async-value-setter?file=src/main.ts