pour le code suivant
public getData() {
this.service.requestData().subscribe(res => {
let response = JSON.stringify(res);
let parsedResponse = JSON.parse(response)
for(let row of parsedResponse.data){
this.dataSource.push(row)
}
});
}
les éléments de ligne peuvent être affichés sur la console, mais le tableau qui utilise dataSource n'affiche que les en-têtes de colonne
p >
3 Réponses :
Essayez avec quelque chose comme ceci:
public getData() {
this.service.requestData().subscribe(res => {
this.dataSource = [];
this.dataSource =res.data;
});
}
Il n'est pas nécessaire de stringify puis de reparse la réponse que je pense .. et avant de remplir la source de données, essayez de l'effacer
Le type 'undefined []' ne contient pas les propriétés suivantes du type 'MatTableDataSource
La propriété 'data' n'existe pas sur le type 'Object'. pour la ligne 4
vos données sont-elles dans res .. ou res.data? .. essayez de définir this.dataSource = res;
Il vous suffit de réinitialiser votre objet dataSource pour déclencher le nouveau rendu:
this.dataSource = new MatTableDataSource(res.data);
MatTable accepte le dataSource comme entrée et la détection de changement est basée sur des références, pousser un élément vers un tableau ne le déclenchera pas.
Remarque
Si vous utilisez MatTableDataSource , définissez-le:
this.service.requestData().subscribe(res => {
this.dataSource = [...this.dataSource, ...res.data];
});
Initialisez les données MatTable
this.service.requestData().subscribe(res => this.dataSource.data = res )
^^ Au lieu de "any", vous devez mettre le type de vos données.
Vous pouvez créer une nouvelle méthode ou vous pouvez simplement écrivez ce code suivant dans ngOnInIt ()
dataSource: MatTableDataSource<any> = new MatTableDataSource<any>([]);
Le type 'Object' ne peut pas être affecté au type 'any []'. Le type «Objet» est attribuable à très peu d'autres types. Vouliez-vous plutôt utiliser le type «tout»? en deuxième ligne
@ hitodo9051 avez-vous essayé d'entrer le type de votre objet au lieu de "any"?