Jusqu'à présent, j'ai,
this.ItemList = [{ "item1":"value-1". "item2":"value-2". "item3":"value-3". "item4":"value-4". }]; <button mat-button mat-raised-button color="warn" [matMenuTriggerFor]="menu" (click)='dummyBtn($event)'>List of values</button> <mat-menu #menu="matMenu" *ngFor = "let list of ItemList"> <button mat-menu-item>Item 1</button> /*<button mat-menu-item>Item 2</button> <button mat-menu-item>Item 2</button>*/ </mat-menu>
Je ne vois aucune erreur dans la console. mais en même temps, les valeurs ne sont pas rendues, mais elles affichent simplement des valeurs codées en dur.
pourrait-on me dire comment y parvenir? l'exemple de stackblitz existant semble compliquer la génération d'un élément dynamique. ou est-ce vraiment impossible avec mon approche?
pls, ne pas voter sans raison. J'ai rencontré quelques exemples, qui n'aident pas pour le moment merci
3 Réponses :
Pourriez-vous essayer ceci et me faire part des résultats?
<mat-menu #menu="matMenu" *ngFor = "let list of ItemList"> <button mat-menu-item>{{list}}</button> /*<button mat-menu-item>{{list}}</button> <button mat-menu-item>{{list}}</button>*/ </mat-menu>
list
est également un objet, et vous voulez une chaîne dans le corps du bouton. Je ne sais pas quelle est l'idée derrière la structure ItemList
d'OP, mais cela devrait probablement être {{list.item1}}
{{list.item1}} n'affichera qu'une seule valeur, pour les parcourir toutes, {{list}} doit être utilisé.
@sid attend une chaîne à l'intérieur, pas un objet qui est ce que vous lui donnez. Notez que ItemList est une liste d'objets, donc list sera un objet qui n'est pas itérable. Ce que je voulais dire, c'est qu'OP veut probablement créer plusieurs boutons à chaque itération, comme
.. .
.
Se sentir plus mal. Je viens de faire une erreur stupide,
déclarer une variable dans une fonction, donc la portée de 'let abc' n'est pas vivante en dehors de la fonction.
var qui a été déclarée n'est pas un tableau
Je viens de corriger les erreurs ci-dessus. fonctionne maintenant comme prévu
déclarer objectKeys = Object.keys
dans le fichier ts et en html,
<button mat-button [matMenuTriggerFor]="menu">Menu</button> <mat-menu #menu="matMenu"> <button mat-menu-item *ngFor="let key of objectKeys(ItemList[0])"> {{ ItemList[0][key] }} </button> </mat-menu>
c'est aussi une autre manière. Génial!
Dans ItemList, vous avez
.
au lieu de,
Bizarre, vous n'obtenez aucune erreur dans la console étant donné que vous avez des erreurs de syntaxe dans le code dactylographié
Votre ItemList ne contient qu'un seul objet. Vous devrez peut-être itérer les valeurs de clé de cet objet.
lols .. je viens de taper par moi-même juste pour montrer ici comme exemple de données.