Web Component Grid
ag-Grid can be used as a Web Component grid inside your application. This page details how to get started.
Web Components are reusable user interface widgets that are created using open Web technology. They are part of the browser and so they do not depend on external libraries such as AngularJS 1.x or JQuery.
Web Components are of particular interest to ag-Grid as I see them as the future for reusable components. A true Web Component will be reusable in any framework. Angular's directives are based on Web Components.
Dependencies
Using ag-Grid as a Web Component requires two dependencies: ag-grid-webcomponent and
either ag-grid or ag-grid-enterprise,.
Download ag-Grid-WebComponent
![]() |
Bower bower install ag-grid-webcomponent |
![]() |
NPM npm install ag-grid-webcomponent |
![]() |
Github Download from Github |
Referencing ag-Grid-WebComponent
To use ag-grid-webcomponent you need to import it in your html file:
Download ag-Grid
![]() |
Bower bower install ag-grid-community |
![]() |
NPM npm install ag-grid-community |
![]() |
Github Download from Github |
Referencing ag-Grid
ag-Grid is distributed as both a self contained bundle (that places ag-Grid on the global scope) and also via a CommonJS package.
Using the bundled version is the quickest way to get going - reference this version in your HTML file is all you need to do.
Download ag-Grid-Enterprise
![]() |
Bower bower install ag-grid-enterprise |
![]() |
NPM npm install ag-grid-enterprise |
![]() |
Github Download from Github |
Referencing ag-Grid-Enterprise
ag-Grid-Enterprise is also distributed as both a self contained bundle and also via a CommonJS package.
As with the ag-Grid example, all we need to do is reference the ag-grid-enterprise dependency and we're good to go:
Using the ag-Grid Web Component
To use the ag-Grid Web Component you need to use ag-grid in your template:
You can also provide simple properties at the same time, for example:
Note here that the properties need to be lower case and hyphenated, as per the Web Components standard.
A complete html file might look something like this:
Note here we're including a polyfill to support older browsers without full support for Web Components (likely to be the case for a while yet), then the ag-Grid dependency, the ag-Grid-WebComponent dependency and finally our application code.
ag-Grid Enterprise Bundle Types
Again similar to ag-Grid, ag-Grid-Enterprise has 4 bundles:
- dist/ag-grid-enterprise.js -> standard bundle containing JavaScript and CSS
- dist/ag-grid-enterprise.min.js -> minified bundle containing JavaScript and CSS
- dist/ag-grid-enterprise.noStyle.js -> standard bundle containing JavaScript without CSS
- dist/ag-grid-enterprise.min.noStyle.js -> minified bundle containing JavaScript without CSS
Even if you are using React, AngularJS 1.x, Angular, VueJS or Web Components, the above is all you need to do. Any grid you create will be an enterprise grid once you load the library.
Basic Web Components Example
The example below shows a simple grid using Web Components.
Complex Web Components Example
The complex example for Web Components is similar to that for Angular. This is on purpose as Angular components are based on Web Components. The example demonstrates the following:
- Events: All data out of the grid comes through events. These events
are native browser events and can be listened to one of:
a) CallingaddEventListener(eventName, handler)on the element
b) Add anonXXXhandler directly to the element or
c) Add anonXXXhandler directly to the grid options.
In the example, the event 'columnResized' is added in each of these three ways. - Attributes: Attributes can be used for setting up the grid. The example uses such properties for the simple data types (ie when they are not Javascript objects). Notice that boolean attributes are defaulted to 'true' IF the attribute is provided WITHOUT any value. If the attribute is not provided, it is taken as false. Attributes can be changed after the grid is initialised, and the grid will update if appropriate (eg open up your dev tools and change the 'group-headers' and set it to 'false').
- Properties: The more complex properties (eg row and column data) are attached directly to the grid DOM element.
- Grid API: The grid can be interfaced with through it's API. The following
interact via the API:
a) The quickFilter text.
b) The Grid API and Column API buttons
c) The 'Refresh Data via API' buton
- Changing Attributes & Properties: When an attribute or property changes value,
the grid, if appropriate, acts on this change. This is done in the example in the following locations:
a) The 'Show Tool Panel' checkbox has it's value bound to the 'showToolPanel' property of the grid.
b) The 'Refresh Data via Element' generates new data for the grid by attaching it to therowDataproperty.
Destroy
To get the grid to release resources, call api.destroy(). If you do not do this, old grids will hang around and add to a memory leak problem in your application.
Next Steps...
Now you can go to interfacing to learn about accessing all the features of the grid.


