ng-om-table-virtual-scroll v16.0.0
Virtual Scroll for Angular Material Table
An Angular Directive, which allow to use virtual scrolling in mat-table
Table of Contents
Installation
NPM
$ npm install -save ng-om-table-virtual-scrollVersion compatibility
| Angular version | Library version |
|---|---|
| >= 16 | ^16.0.0 |
| >= 15 | ^15.0.0 |
Usage
Import TableVirtualScrollModule
import { TableVirtualScrollModule } from 'ng-om-table-virtual-scroll';
@NgModule({
imports: [
// ...
TableVirtualScrollModule
]
})
export class AppModule { }import { TableVirtualScrollModule } from 'ng-om-table-virtual-scroll';
@Component({
standalone: true,
// ...
imports: [
// ...
TableVirtualScrollModule
]
})
export class MyComponent { ... }Note: you need to install and configure virtual scrolling (ScrollingModule) and mat-table (MatTableModule) before. TableVirtualScroll only make them work together properly
Configure the table
Data Source
The TableVirtualScrollDataSource extends the MatTableDataSource and must be
used as the data source for the mat-table (CdkTableVirtualScrollDataSource for cdk-table)
Note: without TableVirtualScrollDataSource the directive won't work
import { TableVirtualScrollDataSource } from 'ng-om-table-virtual-scroll';
@Component({...})
export class MyComponent {
dataSource = new TableVirtualScrollDataSource();
}Directive
The tvsItemSize directive makes the magic
<cdk-virtual-scroll-viewport tvsItemSize="48" headerHeight="56" style="height: 400px;">
<table mat-table [dataSource]="dataSource">
...
</table>
</cdk-virtual-scroll-viewport>Make sure, you set the height to the <cdk-virtual-scroll-viewport> container
Also, you can provide additional properties:
tvsItemSize -> the row height in px (default: 48)
headerHeight -> the header row height in px (default: 56)
footerHeight -> the footer row height in px (default: 48)
headerEnabled -> is the header row in the table (default: true)
footerEnabled -> is the footer row in the table (default: false)
bufferMultiplier -> the size of rendered buffer. The bufferMultiplier * visibleRowsCount number of rows will be rendered before and after visible part of the table.
CdkTable
cdk-table from CdkTableModule is also supported. Just use CdkTableVirtualScrollDataSource as datasource
Issues
If you identify any errors in the library, or have an idea for an improvement, please open an issue.