2016-08-20 54 views
16

Oto mój obiekt (ma numer n kluczy dynamicznych. Mam pokazano dwa w poniższym przykładzie tylko)Jak iterację atrybutów obiektu w Kątowymi 2

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

} 

Oto moja próba pętli rzucać powyżej i wydrukuj wszystkie wartości:

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

Jednak powyższe elementy nie działają. Co robię źle i jaka jest prawidłowa składnia?

+0

Próbowałaś 'obj [i]' zamiast 'obj.i'? –

Odpowiedz

20

Można zrobić coś takiego:

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

gdzie generateArray wygląda następująco:

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

To jest świetne. Dobra robota! – Aarmora

+0

@Archora miło wiedzieć, że było to pomocne dla Ciebie. :) – eg16

+3

ale niech o obj w angle2 jest niedozwolone, ponieważ obiekt nie jest iteracyjny, prawda? – Ayyash

18

niewielkie modyfikacje użytkownika @ eg16 odpowiedź i to działało jak urok dla mnie -

się Funkcja generateArray wygląda tak:

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

i szablon -

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