I am stuck on an issue for a while now, searched for solution but, unfortunately, nothing is working.
I am rendering 5 tables on the screen. The table data is fetched using a GET call. The tables are getting rendered without an issue but I am unable to implement pagination on them. The pagination controls work fine but the table data is not updated. I can see the total elements in the array and i can move around with the direction key, change the page size but it has no effect on table. The table is stuck on the five records.
Here is my .ts file
@ViewChild(MatPaginator) paginatorLegal: MatPaginator;
@ViewChild(MatPaginator) paginatorGSTN: MatPaginator;
@ViewChild(MatPaginator) paginatorPHYS: MatPaginator;
@ViewChild(MatPaginator) paginatorLink: MatPaginator;
// @ViewChild(MatPaginator, {read: true}) paginatorLink: MatPaginator;
@ViewChild(MatPaginator) paginatorAlias: MatPaginator;
ORGANIZATION_LINK //I removed it from Datasource object to see if it will somehow fix the issue.
DATASOURCES = {
LEGAL_ADDRESS: <any>[],
TELECOM_ADDRESS: <any>[],
GSTN_ADDRESS: <any>[],
PHYSICAL_ADDRESS: <any>[],
ORGANIZATION_ALIAS: <any>[]
}
ngOnInit() {
// thisanizationData.push(this.data['dataKey'])
this.cust_serviceanizationToViewOrg.subscribe(data => {
thisanizationData = data
this.legalAddressTableCreation(data[0].legalAddress)
this.fetchTABLES();
})
}
fetchORGLINK() {
this.cust_service.getOrgLink(thisanizationData[0]['orgNumber'], resp => {
if (resp['data']['allOrganizationLinkList'].length > 0) {
this.ORGANIZATION_LINK = new MatTableDataSource(resp['data']['allOrganizationLinkList'])
// this.ORGANIZATION_LINK.paginatorLink = this.paginatorLink
setTimeout(() => this.ORGANIZATION_LINK.paginator = this.paginatorLink);
}
else {
thisLinkNull = true;
}
},
err => {
thisLinkNull = true;
}
);
}
fetchORGALIAS() {
this.cust_service.getOrgAliasFn(thisanizationData[0]['orgNumber'], resp => {
if (resp['data']['allOrganizationAliasList'].length > 0) {
this.DATASOURCES.ORGANIZATION_ALIAS = new MatTableDataSource(resp['data']['allOrganizationAliasList'])
setTimeout(() => { this.DATASOURCES.ORGANIZATION_ALIAS.paginator = this.paginatorAlias });
}
else {
thisAliasNull = true;
}
},
err => {
thisAliasNull = true;
})
}
fetchTABLES() {
this.fetchGSTN(); // same implementation as fetch org link or fetch alias
this.fetchPHYSICAL(); //same implementation as fetch org link or fetch alias
this.fetchORGLINK();
this.fetchORGALIAS();
}
the HTML looks like
<div class="card">
<div class="card-header">
<b>Legal Address</b>
</div>
<div class="card-body">
<div class="table" *ngIf="!GSTN_null">
<div class="searchPagination">
<mat-paginator #paginatorLegal [length]="this.DATASOURCES.LEGAL_ADDRESS?.filteredData?.length" [pageSize]="5"
[pageSizeOptions]="[5, 10, 25, 100]" aria-label="Select page"></mat-paginator>
</div>
<mat-table [dataSource]="this.DATASOURCES.LEGAL_ADDRESS" class="mat-table_">
//data
</mat-table>
</div>
<div class="noRecords" *ngIf='GSTN_null'>
<b>No Records Found....</b>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<b>GSTN Address</b>
</div>
<div class="card-body">
<div class="table" *ngIf="!GSTN_null">
<div class="searchPagination">
<mat-paginator #paginatorGSTN [length]="this.DATASOURCES.GSTN_ADDRESS?.filteredData?.length" [pageSize]="5"
[pageSizeOptions]="[5, 10, 25, 100]" aria-label="Select page"></mat-paginator>
</div>
<mat-table [dataSource]="this.DATASOURCES.GSTN_ADDRESS" class="mat-table_">
//data
</mat-table>
</div>
<div class="noRecords" *ngIf='GSTN_null'>
<b>No Records Found....</b>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<b>Physical Address</b>
</div>
<div class="card-body">
<div class="table" *ngIf="!physicalNull">
<div class="searchPagination">
<mat-paginator #paginatorPHYS [length]="this.DATASOURCES.PHYSICAL_ADDRESS?.filteredData?.length" [pageSize]="5"
[pageSizeOptions]="[5, 10, 25, 100]" aria-label="Select page"></mat-paginator>
</div>
<mat-table [dataSource]="this.DATASOURCES.PHYSICAL_ADDRESS" class="mat-table_">
//data
</mat-table>
</div>
<div class="noRecords" *ngIf='physicalNull'>
<b>No Records Found....</b>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<b>Organization Link</b>
</div>
<div class="card-body">
<div class="table" *ngIf="!orgLinkNull">
<div class="searchPagination">
<mat-paginator #paginatorLink [length]="this.ORGANIZATION_LINK?.filteredData?.length" [pageSize]="5"
[pageSizeOptions]="[5, 10, 25, 100]" aria-label="Select page"></mat-paginator>
</div>
<mat-table [dataSource]="this.ORGANIZATION_LINK" class="mat-table_">
//data
</mat-table>
</div>
<div class="noRecords" *ngIf='orgLinkNull'>
<b>No Records Found....</b>
</div>
</div>
</div>
<div class="card">
<div class="card-header"><b>Organization Alias</b></div>
<div class="card-body">
<div class="table" *ngIf="!orgAliasNull">
<div class="searchPagination">
<mat-paginator #paginatorAlias [length]="this.DATASOURCES.ORGANIZATION_ALIAS?.filteredData?.length"
[pageSize]="5" [pageSizeOptions]="[5, 10, 25, 100]" aria-label="Select page"></mat-paginator>
</div>
<mat-table [dataSource]="this.DATASOURCES.ORGANIZATION_ALIAS" class="mat-table_">
//data
</mat-table>
</div>
<div class="noRecords" *ngIf='orgAliasNull'>
<b>No Records Found....</b>
</div>
</div>
</div>
Is there something that I am missing (Been working for 12 hours straight), a typo or something? Or is there another way to tackle this issue and making the pagination work on the tables.
I am stuck on an issue for a while now, searched for solution but, unfortunately, nothing is working.
I am rendering 5 tables on the screen. The table data is fetched using a GET call. The tables are getting rendered without an issue but I am unable to implement pagination on them. The pagination controls work fine but the table data is not updated. I can see the total elements in the array and i can move around with the direction key, change the page size but it has no effect on table. The table is stuck on the five records.
Here is my .ts file
@ViewChild(MatPaginator) paginatorLegal: MatPaginator;
@ViewChild(MatPaginator) paginatorGSTN: MatPaginator;
@ViewChild(MatPaginator) paginatorPHYS: MatPaginator;
@ViewChild(MatPaginator) paginatorLink: MatPaginator;
// @ViewChild(MatPaginator, {read: true}) paginatorLink: MatPaginator;
@ViewChild(MatPaginator) paginatorAlias: MatPaginator;
ORGANIZATION_LINK //I removed it from Datasource object to see if it will somehow fix the issue.
DATASOURCES = {
LEGAL_ADDRESS: <any>[],
TELECOM_ADDRESS: <any>[],
GSTN_ADDRESS: <any>[],
PHYSICAL_ADDRESS: <any>[],
ORGANIZATION_ALIAS: <any>[]
}
ngOnInit() {
// thisanizationData.push(this.data['dataKey'])
this.cust_serviceanizationToViewOrg.subscribe(data => {
thisanizationData = data
this.legalAddressTableCreation(data[0].legalAddress)
this.fetchTABLES();
})
}
fetchORGLINK() {
this.cust_service.getOrgLink(thisanizationData[0]['orgNumber'], resp => {
if (resp['data']['allOrganizationLinkList'].length > 0) {
this.ORGANIZATION_LINK = new MatTableDataSource(resp['data']['allOrganizationLinkList'])
// this.ORGANIZATION_LINK.paginatorLink = this.paginatorLink
setTimeout(() => this.ORGANIZATION_LINK.paginator = this.paginatorLink);
}
else {
thisLinkNull = true;
}
},
err => {
thisLinkNull = true;
}
);
}
fetchORGALIAS() {
this.cust_service.getOrgAliasFn(thisanizationData[0]['orgNumber'], resp => {
if (resp['data']['allOrganizationAliasList'].length > 0) {
this.DATASOURCES.ORGANIZATION_ALIAS = new MatTableDataSource(resp['data']['allOrganizationAliasList'])
setTimeout(() => { this.DATASOURCES.ORGANIZATION_ALIAS.paginator = this.paginatorAlias });
}
else {
thisAliasNull = true;
}
},
err => {
thisAliasNull = true;
})
}
fetchTABLES() {
this.fetchGSTN(); // same implementation as fetch org link or fetch alias
this.fetchPHYSICAL(); //same implementation as fetch org link or fetch alias
this.fetchORGLINK();
this.fetchORGALIAS();
}
the HTML looks like
<div class="card">
<div class="card-header">
<b>Legal Address</b>
</div>
<div class="card-body">
<div class="table" *ngIf="!GSTN_null">
<div class="searchPagination">
<mat-paginator #paginatorLegal [length]="this.DATASOURCES.LEGAL_ADDRESS?.filteredData?.length" [pageSize]="5"
[pageSizeOptions]="[5, 10, 25, 100]" aria-label="Select page"></mat-paginator>
</div>
<mat-table [dataSource]="this.DATASOURCES.LEGAL_ADDRESS" class="mat-table_">
//data
</mat-table>
</div>
<div class="noRecords" *ngIf='GSTN_null'>
<b>No Records Found....</b>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<b>GSTN Address</b>
</div>
<div class="card-body">
<div class="table" *ngIf="!GSTN_null">
<div class="searchPagination">
<mat-paginator #paginatorGSTN [length]="this.DATASOURCES.GSTN_ADDRESS?.filteredData?.length" [pageSize]="5"
[pageSizeOptions]="[5, 10, 25, 100]" aria-label="Select page"></mat-paginator>
</div>
<mat-table [dataSource]="this.DATASOURCES.GSTN_ADDRESS" class="mat-table_">
//data
</mat-table>
</div>
<div class="noRecords" *ngIf='GSTN_null'>
<b>No Records Found....</b>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<b>Physical Address</b>
</div>
<div class="card-body">
<div class="table" *ngIf="!physicalNull">
<div class="searchPagination">
<mat-paginator #paginatorPHYS [length]="this.DATASOURCES.PHYSICAL_ADDRESS?.filteredData?.length" [pageSize]="5"
[pageSizeOptions]="[5, 10, 25, 100]" aria-label="Select page"></mat-paginator>
</div>
<mat-table [dataSource]="this.DATASOURCES.PHYSICAL_ADDRESS" class="mat-table_">
//data
</mat-table>
</div>
<div class="noRecords" *ngIf='physicalNull'>
<b>No Records Found....</b>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<b>Organization Link</b>
</div>
<div class="card-body">
<div class="table" *ngIf="!orgLinkNull">
<div class="searchPagination">
<mat-paginator #paginatorLink [length]="this.ORGANIZATION_LINK?.filteredData?.length" [pageSize]="5"
[pageSizeOptions]="[5, 10, 25, 100]" aria-label="Select page"></mat-paginator>
</div>
<mat-table [dataSource]="this.ORGANIZATION_LINK" class="mat-table_">
//data
</mat-table>
</div>
<div class="noRecords" *ngIf='orgLinkNull'>
<b>No Records Found....</b>
</div>
</div>
</div>
<div class="card">
<div class="card-header"><b>Organization Alias</b></div>
<div class="card-body">
<div class="table" *ngIf="!orgAliasNull">
<div class="searchPagination">
<mat-paginator #paginatorAlias [length]="this.DATASOURCES.ORGANIZATION_ALIAS?.filteredData?.length"
[pageSize]="5" [pageSizeOptions]="[5, 10, 25, 100]" aria-label="Select page"></mat-paginator>
</div>
<mat-table [dataSource]="this.DATASOURCES.ORGANIZATION_ALIAS" class="mat-table_">
//data
</mat-table>
</div>
<div class="noRecords" *ngIf='orgAliasNull'>
<b>No Records Found....</b>
</div>
</div>
</div>
Is there something that I am missing (Been working for 12 hours straight), a typo or something? Or is there another way to tackle this issue and making the pagination work on the tables.
Share Improve this question edited Feb 10, 2022 at 19:01 VLAZ 29.1k9 gold badges62 silver badges84 bronze badges asked Feb 10, 2022 at 18:18 MenimEMenimE 3041 gold badge7 silver badges18 bronze badges 1-
1
You need use
#paginatorLegal="matPaginator"
and@ViewChild('paginatorLegal')
. see e.g. stackoverflow./questions/62529570/… – Eliseo Commented Feb 10, 2022 at 19:06
1 Answer
Reset to default 14First tell your ponent the alias of the matPaginator which you are going to bind in the HTML.
For Example in your HTML it should be like this:
<mat-paginator #paginatorLegal="matPaginator"
[length]="this.DATASOURCES.LEGAL_ADDRESS?.filteredData?.length" [pageSize]="5"
[pageSizeOptions]="[5, 10, 25, 100]" aria-label="Select page"></mat-paginator>
<mat-paginator #paginatorGSTN="matPaginator"
[length]="this.DATASOURCES.GSTN_ADDRESS?.filteredData?.length" [pageSize]="5"
[pageSizeOptions]="[5, 10, 25, 100]" aria-label="Select page"></mat-paginator>
And then bind to them in your .ts ponent using ViewChild alias property
@ViewChild('paginatorLegal') paginatorLegal: MatPaginator;
@ViewChild('paginatorGSTN') paginatorGSTN: MatPaginator;
and then finally when you get the data you should bind the paginators where the respective MatTableDataSource
which you already did in the subscribe code.