应用单元格渲染后获取单元格值 ag-grid

Get Cell value after cell rendering applied to it ag-grid

我正在使用 ag-grid 来显示一些信息。

            var grid_column_definitions = [
                {
                    field: "id",
                    headerName: "ID",
                    cellRenderer: function (params) {
                        if (!params.data) return '';
                        return '<a ng-href="#/id/{{data.id}}">{{data.id}}</a>';
                    }
                }
]

我知道我可以使用 ag_grid api 获取单元格的值: (cell.node.data)

但是这个 returns 我是原始节点。有没有办法在应用单元格渲染器后获取格式化的行 (html)。

好的,所以我找不到任何从模板中获取内容的解决方案。但我能够使用不同的其他 ag-grid API 来实现这一点。 我主要需要它来创建列的 csv 超链接。例如。如果单元格 a 是 www.example.com/cell_value 的超链接,我希望它在 csv 和超链接中都存在。

所以这是我的解决方案:

scope.exportData = function(){ // function to export data, in case anyone need this.
  var params = {};
  var params.fileName = "test";
  params.processCellCallback = function(cell){
    return create_csv_link_based_on_column(cell);
  }
  scope.data.api.exportDataAsCsv(params);
}

===============

var create_csv_link_based_on_column(cell){
                var cellRenderer = cell.api.getColumnDef(cell.column.colId).cellRenderer; // get the cell renderer function
                if(cellRenderer){ // if the cell has cellRenderer functiond defined.
                    var cellTemplate = cellRenderer(cell.node); // eg. <a ng-href="#/sample/{{data.id}}">{{data.id}}</a>
                    if(cellTemplate){
                        if(cellTemplate.indexOf("href=") !== -1){ // if the template has hyperlink.
                            try{
                                var link = cellTemplate.split(/"/)[1]; // get the hyperlink. eg. #/sample/{{data.id}}
                                var angularVariable = link.substring(link.lastIndexOf("{")+1,link.indexOf("}")); // eg. data.id
                                var properties = angularVariable.split('.'); // eg. ["data", "id"];
                                var propertyValue = properties.reduce((obj, prop) => obj && obj[prop], cell.node); // eg. cell.node.data.id = 16
                                var finalLink = link.replace("{{"+angularVariable+"}}", propertyValue); // replace angular variable with the data
                                finalLink = base_url + finalLink;
                                var csv_link = finalLink ? '=HYPERLINK("'+finalLink+'", "'+cell.value+'")' : cell.value;
                                return csv_link;
                            }catch(err){ // unexpected case
                                return cell.value;
                            }
                        }
                    }
                }
                return cell.value;
}