Angular 如何从cellRender自定义组件调用api.stopEditing(true)来通知ag网格组件
我已经为CheckBoxrender创建了一个自定义组件类,从那里我想通知父类单元格编辑发生了,需要调用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
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也会触发。