Notez que la pagination/tri ne fonctionne pas correctement. La pagination n'affiche pas le nombre d'éléments qu'elle affiche et le tri ne fonctionne pas, mais si vous supprimez la ligne dans le fichier html * ngIf = "dataSource? .FilteredData.length> 0" l'erreur est corrigée. Si vous utilisez le filtrage, cela fonctionne, mais il n'affiche pas la quantité de filtre
Vérifiez l'exemple.
https://stackblitz.com/edit/angular-wqkekh-nm3pn2?file=app/table-pagination-example.html
Dans votre component.ts, remplacez ce code
@ViewChild(MatPaginator) paginator: MatPaginator;
@ViewChild(MatSort) sort: MatSort;
ngAfterViewInit() {
this.dataSource.paginator = this.paginator;
this.dataSource.sort = this.sort;
}
avec ça :
private paginator: MatPaginator;
private sort: MatSort;
@ViewChild(MatSort) set matSort(ms: MatSort) {
this.sort = ms;
this.setDataSourceAttributes();
}
@ViewChild(MatPaginator) set matPaginator(mp: MatPaginator) {
this.paginator = mp;
this.setDataSourceAttributes();
}
setDataSourceAttributes() {
this.dataSource.paginator = this.paginator;
this.dataSource.sort = this.sort;
}
Et dans votre html:
<mat-card *ngIf="!dataSource?.filteredData.length" style="margin-bottom: 5px">
<div><span>ZERO RESULT</span></div>
</mat-card>
<mat-card *ngIf="dataSource?.filteredData.length">
** insert the table code that you have **
</mat-card>
Cela peut être résolu par la stratégie suivante:
dataSource = new MatTableDataSource();
@ViewChild(MatSort, {static: false}) set content(sort: MatSort) {
this.dataSource.sort = sort;
}
Maintenant, même si vous utilisez * ngIf, cela fonctionnera.
Il suffit d'ajouter statique: faux au lieu de vrai, fonctionne correctement @ViewChild (MatSort, {statique: faux}) e}) public sortaddEpisode: MatSort;