2017-08-17 136 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> 
相關問題