Objectifs
- Etre capable de trier un angular 'material DataTable'
Présentation
- Dans le tutoriel précédent, Récupérer des données dans un Angular DataTable, nous avons récupéré des données provenant d'une base de données MySQL dans un 'material DataRable
- Dans ce tutoriel ,nous allons ajouter la fonctionnalité de tri à notre table, et à cet effet, nous allons utiliser la directive
matSortsur la balise table . De plus, nous devons placer la directivemat-sort-headerpour chaque cellule d'en-tête qui déclenchera le tri.
Réalisation
- Comme nous avons annoncé, nous prenons le travail réalisé dans le tutoriel Récupérer des données dans un Angular DataTable,comme départ.
Modifier le fichier module.ts
- Pour prendre en charge le tri dans notre tableau, nous devons importer
MatSortModuledans le module d'application.
import { MatSortModule } from '@angular/material/sort' ;- Pour prendre en charge le tri dans notre tableau, nous devons importer
- Ajoutons
MatSortModuleauximportsmétadonnées du@NgModule.
@NgModule({ declarations: [ AppComponent ], imports: [ ............... MatSortModule ],Modifier le fichier component.html
- La modification de la balise ma-table tag va être notre première tâche:
<mat-table [dataSource]="dataSource" matSort>- Ensuite, nous allons ajouter la directive
mat-sort-headerau colonnes Modifier le fichier component.ts
- Pour que la fonctionnalité de tri soit opérationnelle, nous devons également modifier le fichier component.ts:
- Informez la source de données de votre tri : Votre MatTableDataSource ne connaît pas le tri par défaut. Obtenez une instance de ViewChild à trier dans votre code:
@ViewChild(MatSort) sort: MatSort; constructor(private repoService: RepositoryService) { } ngOnInit() { this.getAllOwners(); this.dataSource.sort = this.sort; }Modification de l'ordre de tri
- Par défaut, un en-tête de tri commence son tri à ascendant puis descendant. Déclencher l'en-tête de tri après descendant supprimera le tri.
- Pour inverser l'ordre de tri pour tous les en- têtes, définissez la
matSortStartàdescde la directivematSort. Pour inverser l'ordre uniquement pour un en-tête spécifique, définissezstartplutôt l' entrée uniquement sur l'en-tête. - Pour empêcher l'utilisateur d'effacer l'état de tri d'une colonne déjà triée, définissez
matSortDisableClearsurtruesurmatSortpour affecter tous les en-têtes oudisableClearsurtruesur un en-tête spécifique.
Résultat

Filtrage Mat-Table
- Dans ce vidéo, je vais vous montrer comment filtrer votre mat-table.
<ng-container matColumnDef="prenom">
<mat-header-cell *matHeaderCellDef mat-sort-header> prenom </mat-header-cell>
<mat-cell *matCellDef="let post"> {{post.prenom}} </mat-cell>
</ng-container>