Hello to all, welcome to therichpost.com. In this post, I will tell you, Angular6 Material Datatables example with Pagination.
Angular Material is getting more popularity day by day because with the help of Angular Material, we can build angular app more attractive and well designing.
There is many more in Angular material but today I will tell you how to add datatables with pagination in your angular app .
First you need to set up your angular app and after this please do the following steps:
1. First you need to run below command into your terminal to include angular material into your angular 6 app:
npm install --save @angular/material @angular/cdk @angular/animations
2. After that, please add below code into your app.module.ts file:
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; import { MatTableModule , MatSortModule, MatPaginatorModule } from "@angular/material"; import {DataSource} from '@angular/cdk/table'; import { CdkTableModule } from '@angular/cdk/table'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, MatTableModule, MatPaginatorModule, BrowserAnimationsModule, ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
3. After that, please add below code into your app.component.ts file:
import {Component, OnInit, ViewChild} from '@angular/core'; import {MatSort, MatTableDataSource, MatPaginator} from '@angular/material'; export interface PeriodicElement { name: string; position: number; weight: number; symbol: string; } const ELEMENT_DATA: PeriodicElement[] = [ {position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'}, {position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'}, {position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'}, {position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'}, {position: 5, name: 'Boron', weight: 10.811, symbol: 'B'}, {position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'}, {position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'}, {position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'}, {position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'}, {position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'}, ]; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { title = 'my-angular-app'; displayedColumns = ['position', 'name', 'weight', 'symbol']; dataSource = new MatTableDataSource(ELEMENT_DATA); @ViewChild(MatPaginator) paginator: MatPaginator; ngOnInit() { this.dataSource.paginator = this.paginator; } }
4. After that, please add below code into your app.component.html file:
<div style="text-align:center"> <h1> Welcome to {{ title }}! </h1> <div class="mat-elevation-z8"> <table mat-table [dataSource]="dataSource"> <!--- Note that these columns can be defined in any order. The actual rendered columns are set as a property on the row definition" --> <!-- Position Column --> <ng-container matColumnDef="position"> <th mat-header-cell *matHeaderCellDef> No. </th> <td mat-cell *matCellDef="let element"> {{element.position}} </td> </ng-container> <!-- Name Column --> <ng-container matColumnDef="name"> <th mat-header-cell *matHeaderCellDef> Name </th> <td mat-cell *matCellDef="let element"> {{element.name}} </td> </ng-container> <!-- Weight Column --> <ng-container matColumnDef="weight"> <th mat-header-cell *matHeaderCellDef> Weight </th> <td mat-cell *matCellDef="let element"> {{element.weight}} </td> </ng-container> <!-- Symbol Column --> <ng-container matColumnDef="symbol"> <th mat-header-cell *matHeaderCellDef> Symbol </th> <td mat-cell *matCellDef="let element"> {{element.symbol}} </td> </ng-container> <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> </table> <mat-paginator [pageSizeOptions]="[5, 10, 20]" showFirstLastButtons></mat-paginator> </div> </div>
5. Finally, please add below code into your app.component.css file:
table { width: 100%; }
And your done, if you have any query related to this post, then you can questions or comment below.
Hey…just one point, rather than using npm to install the required packages…just use “ng add @angular/material” and it will add all the required packages and set up the dev environment too. (styles.css, angular.json…etc)
Thats good and thank you