Reputation: 757
Here's its definition:
{
headerName: "Activité",
field: "activite",
editable: true,
, cellClass: "cell-wrap-text"
}
Here's the method I want to launch every time the user enters a new input in that column.
public UpdateActValue() {
this.data.sendActToBia(this.params.data.activite);
}
Here are my questions:
1/ Are there any ag-grid "native" way to launch a particular method after a cell value from a column has been edited?
2/ Should I simply define a custom cell renderer and do all the necessary work there?
Thank you!
Upvotes: 9
Views: 39769
Reputation: 4942
Please note that there might be a case when onCellValueChanged is if you defined custom cell valueSetter
, for example via gridOptions.
This is what was happening for my in Angular 6. Below if you uncomment valueSetter you will not get onCellValueChanged called.
private initGridOptions(mappingId: number) {
this.gridOptions = {
defaultColDef: {
onCellValueChanged: (event) => {
console.log("Fired for column");
console.log(event);
},
// IF YOU UNCOMMENT Value Setter onCellValueChanged will not get fired
// valueSetter: value => {
// return false;
// },
}
};
}
Upvotes: 1
Reputation: 42526
You can make use of the cellValueChanged
event binding to detect changes in cell value.
On your component.html, you can simply bind the onCellValueChanged()
method to the cellValueChanged
event.
<ag-grid-angular
.
.
(gridReady)="onGridReady($event)"
(cellValueChanged)="onCellValueChanged($event)"
>
And on your component.ts, you will define the onCellValueChanged()
method, which will be fired every single time any cell value has changed.
onCellValueChanged(event) {
// handle the rest here
}
You may read up more about grid cell editing and change detection over here.
Upvotes: 13
Reputation: 757
I have just found a simple way to do this. I hope it helps.
In grid.component.html:
Add this inside the grid definition:
(cellValueChanged)="onCellValueChanged($event)"
In the grid.component.ts: Define the method:
onCellValueChanged(params) {
const colId = params.column.getId();
if (colId === "activite") {
this.data.sendActToBia(params.data.activite);
}
}
Upvotes: 5