web-dev-qa-db-fra.com

Appeler renderRows () sur la table des matériaux angulaires

J'essaie d'obtenir l'actualisation de ma table angulaire après la mise à jour des données utilisées dans la table. 

La documentation indique "vous pouvez déclencher une mise à jour des lignes rendues par la table en appelant sa méthode renderRows ()". mais ce n'est pas comme un composant enfant normal où je peux utiliser quelque chose "@ViewChild (MatSort) sort: MatSort;" puisque je ne l'importe pas. 

Si je l'importe et essaie quelque chose comme @ViewChild ('maTable') myTable: MatTableModule; alors je reçois une erreur qui dit que renderRows () n'existe pas sur ce type.

Comment puis-je appeler cette méthode? Merci!

Mon extrait de code de table:

<mat-table #table [dataSource]="dataSource" myTable class="dataTable">
9
gv0000

Assurez-vous d'importer ViewChild et MatTable:

import {Component, ViewChild} from '@angular/core';
import {MatTable} from '@angular/material';

Ensuite, vous pouvez obtenir une référence à la table en utilisant ViewChild (notez qu'un type T est requis sur MatTable - je viens d'en utiliser une, mais si vous avez une table typée, vous devrez utiliser ce type:

@ViewChild(MatTable) table: MatTable<any>;

Ensuite, lorsque vous modifiez la table de quelque manière que ce soit, vous devrez appeler la méthode renderRows ().

delete(row: any): void {
  /* delete logic here */
  this.table.renderRows();
}

Voici un exemple de travail très simple: https://stackblitz.com/edit/angular-bxrahf

Certaines sources trouvées lors de la résolution de ce problème moi-même:

23
Brad Lawrence