如何遍历 Angular 2 中的对象属性
How to iterate through an Object attributes in Angular 2
这是我的对象(它有 n 个动态键。我在下面的示例中只显示了两个)
let obj = {
abc:["some text", "some more text"],
xyz:["more text", "what do you think?", "I'm tired now"]
}
这是我尝试循环抛出上述内容并打印所有值
<div *ngFor='let item of obj ; let i = index;'>
<p *ngFor="let value of obj.i">{{value}}
</div>
但上面的方法似乎不起作用。我做错了什么,正确的语法是什么?
你可以这样做:
<li *ngFor="let o of obj">
<p *ngFor="let objArrayElement of generateArray(o)"> {{objArrayElement}} </p>
</li>
其中 generateArray
看起来像:
generateArray(obj){
return Object.keys(obj).map((key)=>{ return obj[key]});
}
对@eg16 的回答稍作修改,它对我来说就像一个魅力 -
generateArray 函数如下所示-
generateArray(obj){
return Object.keys(obj).map((key)=>{ return {key:key, value:obj[key]}});
}
和模板 -
<li *ngFor="let item of generateArray(data)">{{item.key}}: {{item.value}}</li>
从 6.1 版开始,KeyValue Pipe 由 Angular 提供:
<li *ngFor="let item of (data | keyvalue)">{{item.key}}: {{item.value}}</li>
这使得以前使用 Object.keys 引用或自己的实现的解决方法过时了。
这是我的对象(它有 n 个动态键。我在下面的示例中只显示了两个)
let obj = {
abc:["some text", "some more text"],
xyz:["more text", "what do you think?", "I'm tired now"]
}
这是我尝试循环抛出上述内容并打印所有值
<div *ngFor='let item of obj ; let i = index;'>
<p *ngFor="let value of obj.i">{{value}}
</div>
但上面的方法似乎不起作用。我做错了什么,正确的语法是什么?
你可以这样做:
<li *ngFor="let o of obj">
<p *ngFor="let objArrayElement of generateArray(o)"> {{objArrayElement}} </p>
</li>
其中 generateArray
看起来像:
generateArray(obj){
return Object.keys(obj).map((key)=>{ return obj[key]});
}
对@eg16 的回答稍作修改,它对我来说就像一个魅力 -
generateArray 函数如下所示-
generateArray(obj){
return Object.keys(obj).map((key)=>{ return {key:key, value:obj[key]}});
}
和模板 -
<li *ngFor="let item of generateArray(data)">{{item.key}}: {{item.value}}</li>
从 6.1 版开始,KeyValue Pipe 由 Angular 提供:
<li *ngFor="let item of (data | keyvalue)">{{item.key}}: {{item.value}}</li>
这使得以前使用 Object.keys 引用或自己的实现的解决方法过时了。