首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ag-grid:异步valueFormatter?

Ag-grid:异步valueFormatter?
EN

Stack Overflow用户
提问于 2020-01-23 03:23:12
回答 1查看 1.5K关注 0票数 1

我有一个看似简单的问题,已经困扰我好几天了。显然,在ag-grid的历史上,从来没有人像谷歌搜索结果完全缺乏所显示的那样,遇到过这个问题。

我正在尝试为我的一列实现一个简单的值格式化程序。下面是列定义...

代码语言:javascript
运行
复制
    ...
    {
      headerName: 'OT Unit', 
      field: 'otUnitCode', 
      valueFormatter: this.formatOTUnit.bind(this)
    },
    ....

帮助函数'this.formatOTUnit(...)‘是这样定义的:

代码语言:javascript
运行
复制
  formatOTUnit(params) {
    console.log(params);
    this.service.getOTUnitDesc(params.data.otUnitCode).subscribe((desc) => {
      console.log(desc);
      return desc;
    });
  }

基本上,此函数采用存储在JSON中的数字代码,并调用一个异步函数来获取相应的描述。这是我想要在表格单元格中显示的描述(而不是数字代码)。

console.log(params)向我展示了事件对象,其中包含了需要转换的代码(params.data.otUnitCode),而console.log(desc)则显示了正确的描述。但是,表格中的单元格为空。

这里我漏掉了什么?ag-grid不支持异步回调作为valueFormatter吗?

EN

回答 1

Stack Overflow用户

发布于 2020-01-24 03:24:13

问题似乎是围绕在单元格渲染器中无法访问的'this‘全局引用,所以'this.service’是未定义的。

我做了更多的研究,找到了一个可能的解决方案。首先,gridOptions需要定义一个上下文,该上下文具有对服务组件的引用。

代码语言:javascript
运行
复制
this.gridOptions = {
  pagination: true,
  paginationAutoPageSize: true,
  context: {
    myService: this.myService
  }

然后,在单元格渲染器中:

代码语言:javascript
运行
复制
otUnitRenderer(params) {
  var obsValue = undefined;
  var sub = params.context.myService.getOTUnitDesc(params.value).subscribe(v => obsValue = v);
  sub.unsubscribe();
  return "<span>" + params.value + " : " + obsValue +"</span>";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59866903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档