What is ag-grid-angular?
ag-grid-angular is a powerful data grid component for Angular applications. It provides a wide range of features for displaying, editing, and managing data in a tabular format. It is highly customizable and supports large datasets, making it suitable for enterprise applications.
What are ag-grid-angular's main functionalities?
Basic Grid Setup
This code sets up a basic ag-Grid in an Angular component. The `rowData` and `columnDefs` properties are used to define the data and columns of the grid.
<ag-grid-angular
style="width: 100%; height: 350px;"
class="ag-theme-alpine"
[rowData]="rowData"
[columnDefs]="columnDefs">
</ag-grid-angular>
Sorting and Filtering
This code enables sorting and filtering on all columns by setting the `sortable` and `filter` properties in the `defaultColDef` object.
<ag-grid-angular
style="width: 100%; height: 350px;"
class="ag-theme-alpine"
[rowData]="rowData"
[columnDefs]="columnDefs"
[defaultColDef]="{ sortable: true, filter: true }">
</ag-grid-angular>
Row Selection
This code enables multiple row selection in the grid by setting the `rowSelection` property to `multiple`.
<ag-grid-angular
style="width: 100%; height: 350px;"
class="ag-theme-alpine"
[rowData]="rowData"
[columnDefs]="columnDefs"
rowSelection="multiple">
</ag-grid-angular>
Cell Editing
This code enables cell editing for all columns by setting the `editable` property in the `defaultColDef` object.
<ag-grid-angular
style="width: 100%; height: 350px;"
class="ag-theme-alpine"
[rowData]="rowData"
[columnDefs]="columnDefs"
[defaultColDef]="{ editable: true }">
</ag-grid-angular>
Pagination
This code enables pagination in the grid and sets the page size to 10 rows per page by using the `pagination` and `paginationPageSize` properties.
<ag-grid-angular
style="width: 100%; height: 350px;"
class="ag-theme-alpine"
[rowData]="rowData"
[columnDefs]="columnDefs"
pagination="true"
paginationPageSize="10">
</ag-grid-angular>
Other packages similar to ag-grid-angular
ngx-datatable
ngx-datatable is a lightweight Angular component for presenting large and complex data. It offers features like sorting, filtering, and pagination. Compared to ag-grid-angular, ngx-datatable is simpler and may be easier to use for smaller projects, but it lacks some of the advanced features and performance optimizations of ag-grid-angular.
primeng
PrimeNG is a comprehensive UI component library for Angular, which includes a powerful data table component. It offers a wide range of features, including sorting, filtering, pagination, and row selection. PrimeNG is comparable to ag-grid-angular in terms of functionality, but it also provides a broader set of UI components beyond just data tables.
angular-material
Angular Material is the official Material Design component library for Angular. It includes a data table component with features like sorting, pagination, and filtering. While it is not as feature-rich as ag-grid-angular, it integrates seamlessly with other Angular Material components and follows the Material Design guidelines.
AG Grid Angular Component
AG Grid is a fully-featured and highly customizable JavaScript data grid.
It delivers outstanding performance, has no 3rd party dependencies and integrates smoothly with Angular as Angular Component. Here's how our grid looks like with multiple filters and grouping enabled:
Supported Angular Versions
See Angular Version Compatibility for which versions of Angular are supported by each AG Grid version.
Features
Besides the standard set of features you'd expect from any grid:
- Column Interactions (resize, reorder, and pin columns)
- Pagination
- Sorting
- Row Selection
Here are some of the features that make AG Grid stand out:
- Grouping / Aggregation *
- Accessibility support
- Custom Filtering
- In-place Cell Editing
- Records Lazy Loading *
- Server-Side Records Operations *
- Live Stream Updates
- Hierarchical Data Support & Tree View *
- Customizable Appearance
- Customizable Cell Contents
- State Persistence
- Keyboard Navigation
- Data Export to CSV
- Data Export to Excel *
- Excel-like Pivoting *
- Row Reordering
- Copy / Paste
- Column Spanning
- Pinned Rows
- Full Width Rows
- Integrated Charting
- Sparklines
* The features marked with an asterisk are available in the enterprise version only.
Check out developers documentation for a complete list of features or visit our official docs for tutorials and feature demos.
Usage Overview
Use the setup instructions below or go through a 5-minute-quickstart guide.
Install dependencies
$ npm i --save ag-grid-community ag-grid-angular
Import AgGridModule
and add it to the App
module
import { AgGridModule } from 'ag-grid-angular';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, AgGridModule],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {}
Import styles in styles.css
@import "~ag-grid-community/styles//ag-grid.css";
@import "~ag-grid-community/styles//ag-theme-alpine.css";
Set the grid's configuration in a parent component
export class AppComponent {
title = 'app';
columnDefs = [
{headerName: 'Make', field: 'make' },
{headerName: 'Model', field: 'model' },
{headerName: 'Price', field: 'price'}
];
rowData = [
{ make: 'Toyota', model: 'Celica', price: 35000 },
{ make: 'Ford', model: 'Mondeo', price: 32000 },
{ make: 'Porsche', model: 'Boxster', price: 72000 }
];
}
Render the grid as the ag-grid-angular
child component
<ag-grid-angular
style="width: 500px; height: 500px;"
class="ag-theme-alpine"
[rowData]="rowData"
[columnDefs]="columnDefs">
</ag-grid-angular>
Issue Reporting
If you have found a bug, please report them at this repository issues
section. If you're using Enterprise version please use the private ticketing system to do that.
Asking Questions
Look for similar problems on StackOverflow using the ag-grid
tag. If nothing seems related, post a new message there. Do not use GitHub issues to ask questions.
Contributing
AG Grid is developed by a team of co-located developers in London. If you want to join the team check out our jobs listing or send your application to info@ag-grid.com.
License
This project is licensed under the MIT license. See the LICENSE file for more info.