Introduction
In this article, I will explain about functionality and events of Angular Grid.
Overview
Angular Grid is a part of ag-Grid where Ag stands for agnostic. ag-Grid supports Angular using a wrapper component. The wrapper component is used in the application by ag-grid like another Angular component.
You can refer to the basic fundamentals of AG-Grid using my previous article.
Angular Data Grid: Row Selection
Select a row by clicking on it. Selecting a row will remove any previous selection. You can set Single row selection and Multiple row selection.
Single Row Selection
[rowSelection]="single"
Multiple Row Selection
You can set multiple row selection by using set rowSelection="multiple" and you need to hold cntrl then click on multiple rows then it select mutliple rows.
[rowSelection]="multiple"
Also you can set multiple row selections using checbox.
columnDefs = [
{
field: '',
headerCheckboxSelection: true,
headerCheckboxSelectionFilteredOnly: true,
checkboxSelection: true,
maxWidth: 50,
},
{ field: 'make' },
{ field: 'model' },
{ field: 'price' },
];
Component.html
<ag-grid-angular
style="width: 500px; height: 200px;"
class="ag-theme-alpine"
[rowSelection]="rowSelection"
[rowData]="rowData"
[columnDefs]="columnDefs"
(gridReady)="onTableGridReady($event)"
(selectionChanged)="onSelectionChanged($event)"
>
</ag-grid-angular>
Component.ts
import { Component } from '@angular/core';
import {
GridApi,
GridReadyEvent,
SelectionChangedEvent,
} from 'ag-grid-community';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
})
export class AppComponent {
private gridApi?: GridApi;
columnDefs = [
{
field: '',
headerCheckboxSelection: true,
headerCheckboxSelectionFilteredOnly: true,
checkboxSelection: true,
maxWidth: 50,
},
{ field: 'make' },
{ field: 'model' },
{ field: 'price' },
];
rowSelection = 'multiple';
rowData = [
{ make: 'Toyota', model: 'Celica', price: 35000 },
{ make: 'Ford', model: 'Mondeo', price: 32000 },
{ make: 'Porsche', model: 'Boxter', price: 72000 },
];
onTableGridReady(event: GridReadyEvent) {
this.gridApi = event.api;
}
onSelectionChanged(event: SelectionChangedEvent) {
const rows = this.gridApi?.getSelectedNodes();
console.log(rows);
}
}
Angular Data Grid: Row Click
If you want to get data from ag-grid to perform any functionality then you can use row clicks event. You can apply single click or doubleclick event.
Single-Row-Click Event
You can apply single row click event using (rowClicked)
Double-Row-Click Event
You can apply single row click event using (rowDoubleClicked)
HTML
<ag-grid-angular
style="width: 500px; height: 200px;"
class="ag-theme-alpine"
[rowData]="rowData"
[columnDefs]="columnDefs"
(rowClicked)="onRowClicked($event)"
(rowDoubleClicked)="onRowDoubleClicked($event)"
>
</ag-grid-angular>
component.ts
import { Component } from '@angular/core';
import {
GridApi,
GridReadyEvent,
SelectionChangedEvent,
} from 'ag-grid-community';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
})
export class AppComponent {
private gridApi?: GridApi;
columnDefs = [
{ field: 'make' },
{ field: 'model' },
{ field: 'price' },
];
rowSelection = 'multiple';
rowData = [
{ make: 'Toyota', model: 'Celica', price: 35000 },
{ make: 'Ford', model: 'Mondeo', price: 32000 },
{ make: 'Porsche', model: 'Boxter', price: 72000 },
];
onRowDoubleClicked(event: SelectionChangedEvent) {
console.log(event);
}
onRowClicked(event: SelectionChangedEvent) {
console.log(event);
}
}
Angular Data Grid: Cell Rendering
By default, the grid renders values into the cells as strings. If you want something more complex you use a cell renderer.
{
cellRenderer: params => {
// put the value in bold
return 'Value is **' + params.value + '**';
}
}
Component.ts
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
})
export class AppComponent {
columnDefs = [
{
field: 'make',
cellRenderer: (params) => {
// put the value in bold
return 'Value is **' + params.value + '**';
},
},
{ field: 'model' },
{ field: 'price' },
];
rowSelection = 'multiple';
rowData = [
{ make: 'Toyota', model: 'Celica', price: 35000 },
{ make: 'Ford', model: 'Mondeo', price: 32000 },
{ make: 'Porsche', model: 'Boxter', price: 72000 },
];
}
Summary
I hope you will enjoy the article. It is a very useful functionality and it will help you.