实际上我想在表格中显示this data。这里的数据是{object object}。我想显示"最后","买"的所有值。 &安培; "卖"来自所有货币。我可以做硬代码,但我想通过使用ng-repeat或ngFor来减少代码行。如何写这个条件?
我正在使用Angular 4。
答案 0 :(得分:2)
您需要创建一个管道,然后您可以遍历对象。
@Pipe({ name: 'ObjNgFor', pure: false })
export class ObjNgFor implements PipeTransform {
transform(value: any, args: any[] = null): any {
return Object.keys(value)//.map(key => value[key]);
}
}
这个plnkr可能对你有帮助。
答案 1 :(得分:1)
感谢回复人员,您的方式运作良好。但我找到了更简单的方法:
function generateArray(obj) {
return Object.keys(obj).map((key) => obj[key] );
}
这会将json对象转换为数组和
<tr *ngFor="let post of posts">
<td>{{post.last}}</td>
<td>{{post.buy}}</td>
<td>{{post.sell}}</td>
</tr>
这会将json迭代到表中。
P.S:我已经将json保存到“帖子”中的“obj”中。“
答案 2 :(得分:0)
ngFor适用于迭代,因此在您的情况下,您需要首先将json数据转换为数组。
let blockChainData:any = { ... } //data.retrieved.from.server;
let blockChainDataArray:Array<any> = [];
let dataKeys:Array<string> = Object.keys(blockChainData);
dataKeys.forEach((key:string) => {
let entry:any = blockChainData[key]; // Retrieve the object associated with the currency
entry.originalCurrency = key; // Preserve the original currency
blockChainDataArray.push(entry);
});
在你的html代码中,迭代数组
<td *ngFor="let entry of blockChainDataArray">{{ entry.originalCurrency }} {{ entry.buy }} {{ entry.sell }} {{ entry.last }} </td>