2017-08-17 139 views
1

其实我想在表格中显示this data。这里的数据是{object object}。我想显示所有货币的“last”,“buy”&“sell”的所有值。我可以做硬代码,但我想通过使用ng-repeat或ngFor来减少代码行。如何为此写入条件?如何在表中显示{object object}?

我采用了棱角分明4.

+0

什么样的代码你试过吗? – wmorrell

+0

其实我没有任何想法在这种情况下迭代。因为,对象内的对象。如果它是一个数组,我可以使用ngFor。 – RuD3B0y

+0

您可以尝试将此对象转换为数组,然后使用* ngFor –

回答

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转换成从“上岗”被称为“目标文件”“上岗”。

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可能会帮助你。

plnkr

+0

我不会使用纯粹的:false。在每次改变值后,管道再次执行。 – Christian

0

上iterables 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> 
相关问题