2016-08-20 42 views
16

Dưới đây là đối tượng của tôi (Nó có số n các phím năng động. Tôi đã chỉ được hiển thị hai trong ví dụ dưới đây)Làm thế nào để lặp thông qua một đối tượng thuộc tính trong góc 2

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

} 

Đây là nỗ lực của tôi để lặp ném ở trên và in tất cả các giá trị

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

Nhưng những điều trên dường như không hoạt động. Tôi đang làm gì sai và cú pháp chính xác là gì?

+0

Bạn hãy thử 'obj [i] 'thay vì' obj.i'? –

Trả lời

20

Bạn có thể làm một cái gì đó như thế này:

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

nơi generateArray trông giống như:

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

Điều này thật tuyệt. Công việc tốt đẹp! – Aarmora

+0

@Aarmora rất hay khi biết rằng điều đó rất hữu ích cho bạn. :) – eg16

+3

nhưng không cho phép obj trong angular2 không được phép, bởi vì obj không lặp lại, đúng không? – Ayyash

18

sửa đổi chút ít để trả lời @ eg16 và nó làm việc như một say mê đối với tôi -

sự Hàm generateArray trông giống như thế này-

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

và mẫu -

<li *ngFor="let item of generateArray(data)">{{item.key}}: {{item.value}}</li> 
Các vấn đề liên quan