Angular Table Tools Plugin.


Angular TableTools Plugin

Plugin that makes working with tables easier. Through various set of directives it enables you to easily create a pagination, sort table data, filter it and many more.

It uses Bootstrap 4 and Font Awesome for better presentation.

See Live Demo for an example.



yarn add angular-bootstrap4-table-tools
yarn install


Language strings and other defaults are configurable through the TableToolsConfig service.

class AppComponent {
	constructor(config: TableToolsConfigService) {
		config.perPage = 10;


See Live Demo and its source code to better understand all of available components and its usage.

Basic usage

Create an tableTools instance via TableToolsService.create(config) method. Table data should be an array of objects.

This instance needs to be bound to your table container via [tableTools] directive.

Filtered data is available via property which is an Observable.

tableToolsInstance: ITableTools<T>; // pass your row type as generic argument

this.tableToolsInstance = tableToolsService.create({
	collection: [] // table data
<div [tableTools]="tableToolsInstance">
	<div *ngFor="let d of | async">

You can change the default order of data using order property in instance or its config.

You can change number of rows per page and allowed per-page options using perPage and perPageOptions properties.


Use ttSort="field_name" directive on column headers to enable column sorting. Order will be changed on click. Clicking with shift key enables sorting by multiple columns.

Data filtering

Use tt-search component to create a search component (input). Typing text inside it will filter the data leaving only rows that match given search string (row is matched if any of its object values matches the search string).

You can add data filters via filters property using TtFilterGroup and TtFilter classes that extend FormGroup and FormControl respectively only difference being that TtFilter first argument is a filter config object.

filters: new TtFilterGroup({
	firstName: new TtFilter(),
	lastName: new TtFilter(),
	idMore: new TtFilter({
		field: 'id',
		operator: '>'
	idLess: new TtFilter({
		field: 'id',
		operator: '<'
	genderMale: new TtFilter({
		field: 'gender',
		or: true
	genderFemale: new TtFilter({
		field: 'gender',
		or: true


Use tt-pagination component to create pagination.

Use tt-per-page component to create a component that allows user to change default results per page number.

Select rows

You can use <tt-select [item]="row"> component inside each row to create a checkbox that allows user to select given row.

Use tt-select-all component to create a checkbox that selects/deselects all checkboxes created by tt-select.

Selected rows can be fetched by using instance.selected.getSelected() method.

Export (requires angular-bootstrap4)

Use tt-export component to create a component that allows user to easily export currently visible data. Export takes data from HTML, so it's exported in a format that is visible in browser.

Server-side processing

Use url and resolver properties to process data on server-side.