web-dev-qa-db-fra.com

Typescript Convert Object to Array - parce que * ngFor ne prend pas en charge l'itération de l'objet

  • Je ne veux pas utiliser la boucle for pour convertir un objet en tableau comme celui-ci! Si doublé le processus et ralentir les performances de l'application (j'utilise Ionic2 et TypeScript, avec Firebase)

    for (let key in data) {array.Push (value); }

Existe-t-il une solution pour itérer l'objet lui-même (montré dans l'image ci-jointe) en utilisant * ngFor.

Ou je peux convertir cet objet (montré dans l'image ci-jointe) en tableau, de sorte qu'il peut être itérable dans * ngFor.

enter image description here

6
Ankit Maheshwari

Vous pouvez utiliser Object.keys (obj) pour obtenir des index nommés. Cela renverra une structure de tableau que vous pouvez utiliser/personnaliser davantage. Un exemple d'utilisation pour itérer sur les valeurs d'objets peut ressembler à ceci

var persons = { 
    john: { age: 23, year:2010},
    jack: { age: 22, year:2011},
    jenny: { age: 21, year:2012}
}

Obtenir un itérateur

var resultArray = Object.keys(persons).map(function(personNamedIndex){
    let person = persons[personNamedIndex];
    // do something with person
    return person;
});

// you have resultArray having iterated objects 
28
Farooq Ahmed Khan

Depuis Angular 6, il y a maintenant un opérateur de canal de valeur clé. Simple, procédez comme suit:

*ngFor="for item in objectList | keyvalue"

item.key # refers to the keys (134, 135...) in your example
item.value # refers to the object for each key
6
henry74