Angular 如何从cellRender自定义组件调用api.stopEditing(true)来通知ag网格组件

Angular 如何从cellRender自定义组件调用api.stopEditing(true)来通知ag网格组件,angular,ag-grid,Angular,Ag Grid,我已经为CheckBoxrender创建了一个自定义组件类,从那里我想通知父类单元格编辑发生了,需要调用api.stopeediting(true)但它从未被调用,请检查以下代码 复选框的自定义渲染类: export class AgGridCheckboxComponent implements ICellRendererAngularComp { private params: any; checked: boolean = false; agInit(params: any

我已经为CheckBoxrender创建了一个自定义组件类,从那里我想通知父类单元格编辑发生了,需要调用
api.stopeediting(true)但它从未被调用,请检查以下代码

复选框的自定义渲染类:

export class AgGridCheckboxComponent implements ICellRendererAngularComp {
  private params: any;

  checked: boolean = false;

  agInit(params: any): void {
      this.params = params;
      this.checked = this.params.value === "Approved";
  }

  // demonstrates how you can do "inline" editing of a cell
  onChange(checked: boolean) {
    // console.log("CheckBox value:",this.params.value)
      this.checked = checked;
      this.params.node.setDataValue(this.params.colDef, this.checked ? "Approved" : "");
      this.params.value = this.checked ? "Approved" : "";
      if (this.params.eGridCell) {
          this.params.eGridCell.focus();
      }
      this.params.api.stopEditing(true);
  }

  refresh(params: any): boolean {
      return true;
  }
}
上面一行
this.params.api.stopEditing(true)从不通知父类我在其中添加了侦听器以停止编辑

父类中的我的侦听器:

 onCellEditingStopped: function (event) {
        console.log('onCellEditingStopped',event);
        self.updateProductValue(event.value,event.rowIndex,event.colDef.field);
      }
帮助我从自定义类手动调用
停止编辑(true)


提前谢谢

如果要使子组件将子组件中发生的事情通知其父组件,则必须使用@Output:
首先,在子组件中声明一个属性,如下所示:

@Output() stopEdit = new EventEmitter();
然后再次从子组件内部触发事件,我相信您希望在onChange内部触发它,如下所示:

onChange(checked: boolean) {
  // your code
  this.stopEdit.emit(true);
}
最后,在父组件中收听事件:

<ag-grid-checkbox (stopEdit)="onCellEditingStopped($event)"></ag-grid-checkbox>

如果要使子组件将子组件中发生的事情通知其父组件,则必须使用@Output:
首先,在子组件中声明一个属性,如下所示:

@Output() stopEdit = new EventEmitter();
然后再次从子组件内部触发事件,我相信您希望在onChange内部触发它,如下所示:

onChange(checked: boolean) {
  // your code
  this.stopEdit.emit(true);
}
最后,在父组件中收听事件:

<ag-grid-checkbox (stopEdit)="onCellEditingStopped($event)"></ag-grid-checkbox>

对于复选框,onCellValueChange在更改时不会被激发。 但是您可以尝试使用onCellClicked通知父级并检查它是否为复选框列。 你可以这样做-

onCellClicked:(event) => {
      if(event.colDef.field === 'cbox'){
        self.updateProductValue(event.value,event.rowIndex,event.colDef.field);
      }
    }

对于复选框,onCellValueChange在更改时不会被激发。 但是您可以尝试使用onCellClicked通知父级并检查它是否为复选框列。 你可以这样做-

onCellClicked:(event) => {
      if(event.colDef.field === 'cbox'){
        self.updateProductValue(event.value,event.rowIndex,event.colDef.field);
      }
    }

它不是子级到父级更新它的ag网格框架案例,我想要一个事件通知添加到父类中的ag网格。它不是子级到父级更新它的ag网格框架案例,我想要一个事件通知添加到父类中的ag网格。是的,如果我的复选框处于同一位置,这将起作用类,但我创建了一个自定义类fro复选框。我需要通过调用stopEditing()将其更新到ag网格。请告诉我它是否有意义?是的,即使您有自定义单元格渲染器,这也会触发。无需调用stopEditing(),更改将在父组件中通知。正如我在问题中提到的,我没有使用默认的ag grid复选框,我为复选框创建了自定义类,并从中调用stopEditing()您上面的代码是ag grid提供的默认复选框。即使您使用自定义复选框,onCellClicked也会触发。是,如果我的复选框在同一个类中,这将起作用,但我已为此复选框创建了一个自定义类。我需要通过调用stopEditing()将其更新到ag grid,让我知道是否有意义?是,即使您有自定义单元格渲染器,也会触发此操作。无需调用stopEditing(),更改将在父组件中通知。正如我在问题中提到的,我没有使用默认的ag网格复选框,我为复选框创建了自定义类,我想从中调用stopEditing()以上代码是ag grid提供的默认复选框。即使使用自定义复选框,onCellClicked也会触发。