export class DataTableLazyDemo implements OnInit {
datasource: Car[];
cars: Car[];
totalRecords: number;
constructor(private carService: CarService) { }
ngOnInit() {
//datasource imitation
this.carService.getCarsLarge().then(cars => {
this.datasource = cars;
this.totalRecords = this.datasource.length;
this.cars = this.datasource.slice(0, 10);
});
}
loadCarsLazy(event: LazyLoadEvent) {
//in a real application, make a remote request to load data using state metadata from event
//event.first = First row offset
//event.rows = Number of rows per page
//event.sortField = Field name to sort with
//event.sortOrder = Sort order as number, 1 for asc and -1 for dec
//filters: FilterMetadata object having field as key and filter value, filter matchMode as value
//imitate db connection over a network
setTimeout(() => {
if(this.datasource) {
this.cars = this.datasource.slice(event.first, (event.first + event.rows));
}
}, 250);
}
}
<p-dataTable [value]="cars" [lazy]="true" [rows]="10" [paginator]="true" [rowsPerPageOptions]="[5,10,20]"
[totalRecords]="totalRecords" (onLazyLoad)="loadCarsLazy($event)">
<p-header>List of Cars</p-header>
<p-column field="vin" header="Vin"></p-column>
<p-column field="year" header="Year"></p-column>
<p-column field="brand" header="Brand"></p-column>
<p-column field="color" header="Color"></p-column>
</p-dataTable>