如果使用带有 Angular 6 的 ag-Grid 执行全行更新,则获取已编辑的列(带有数据)

Posted

技术标签:

【中文标题】如果使用带有 Angular 6 的 ag-Grid 执行全行更新,则获取已编辑的列(带有数据)【英文标题】:Get the edited columns (with data) if performing a full row update using ag-Grid with Angular 6 【发布时间】:2019-07-22 09:29:12 【问题描述】:

我已经实现了全行更新,但在更新行之前,我需要获取已编辑的列以及列中存在的相应数据。为了在更新行之前对数据进行一些验证以显示错误消息,我使用(rowValueChanged)="onRowValueChanged($event)" 方法。

【问题讨论】:

【参考方案1】:

我相信要做到这一点,您需要同时监听 rowValueChanged、cellValueChanged 事件 并添加一个带有编辑值的标志

  onRowValueChanged(event) 
    console.log(`Changed Values = $event.node.changedValues.join(',')`);
    // do validations
  

  onCellValueChanged(event) 
    if (event.newValue !== event.oldValue) 

      if (!event.node.changedValues)
      event.node.changedValues = [];

      event.node.changedValues.push(event['column']['colId']);
    
  

【讨论】:

使用 ag 网格 18.0 版 如果您同时使用这两个事件,onCellValueChanged 会在编辑字段时设置它,然后您可以在 onRowValueChanged 中使用它 非常感谢您回答和解释逻辑,这正是我想要的。 实际上我使用的是一个列的固定值的下拉列表,所以点击一行来编辑具有该列的行(最初值为空),下拉列表value 也被初始化为该行下拉列表中的第一个选项,因此更改的列也包含该列名。但我没有编辑任何东西

以上是关于如果使用带有 Angular 6 的 ag-Grid 执行全行更新,则获取已编辑的列(带有数据)的主要内容,如果未能解决你的问题,请参考以下文章

带有选项卡的 Angular 6 RouterLink

带有发布请求的 Angular 6 标头不起作用

Angular 6获取带有httpclient问题的响应标头

带有 Spring 安全 webflux 的 Angular 6 被 CORS 阻止

带有故事书 6 的 Angular 8

带有 HTTP 基本身份验证的 Angular 6 HTTP Get 请求