2016-08-20 5 views
16

Attribute mein Objekt HierWie iterieren durch ein Objekt in Angular 2

let obj = { 
abc:["some text", "some more text"], 
xyz:["more text", "what do you think?", "I'm tired now"] 

} 

Hier (Es hat eine Anzahl von n dynamische Schlüssel. Ich habe nur zwei im Beispiel unten gezeigt) ist mein Versuch, Schleife werfen die über und drucken Sie alle Werte

<div *ngFor='let item of obj ; let i = index;'> 
      <p *ngFor="let value of obj.i">{{value}} 
</div> 

Aber das oben genannte scheint nicht zu funktionieren. Was mache ich falsch und wie lautet die korrekte Syntax?

+0

Haben Sie 'versuchen obj [i]' statt 'obj.i'? –

Antwort

20

Man könnte so etwas tun:

<li *ngFor="let o of obj"> 
    <p *ngFor="let objArrayElement of generateArray(o)"> {{objArrayElement}} </p> 
</li> 

wo generateArray wie folgt aussieht:

generateArray(obj){ 
    return Object.keys(obj).map((key)=>{ return obj[key]}); 
} 
+1

Das ist großartig. Gute Arbeit! – Aarmora

+0

@Aarmora schön zu wissen, dass es für Sie hilfreich war. :) – eg16

+3

aber o von obj in angular2 ist nicht erlaubt, weil obj ist nicht iteratible, richtig? – Ayyash

18

leichte Modifikation an @ zB16 Antwort und es funktioniert wie ein Zauber für mich -

die generateArray-Funktion sieht wie folgt aus:

generateArray(obj){ 
    return Object.keys(obj).map((key)=>{ return {key:key, value:obj[key]}}); 
} 

und die Vorlage -

<li *ngFor="let item of generateArray(data)">{{item.key}}: {{item.value}}</li>