Angular5 - 使用* ngFor构建表

时间:2018-02-22 12:26:38

标签: html-table angular5 ngfor

我想从JSON构建一个表

this.adjacencyData = [{
  'x1': [{'x1': '0', 'x2': '1'}],
  'x2': [{'x1': '1', 'x2': '0'}]
}];

表格我做了:

for (let prop in this.adjacencyData) {      
  this.adjacencyDataKeys = Object.keys(this.adjacencyData[prop]);
}

并在模板中:

<thead>
  <tr>
    <th *ngFor="let key of adjacencyDataKeys">{{ key }}</th>      
  </tr>
</thead>

这很好..

但我如何创建TableBody?我正在尝试在网上找到的所有内容..但我仍然不知道:/

我试着这样做:

for ( let _i = 0; _i < this.adjacencyDataKeys.length; _i++ ) {
  this.adjacencyDataVals = Object.values(this.adjacencyData[0][this.adjacencyDataKeys[_i]][0]);
}

并在模板中:

<tbody>
   <tr *ngFor="let val of adjacencyDataVals"><td>{{val}}</td></tr>   
</tbody>

我得到了输出:

<tbody _ngcontent-c8="">
 <tr _ngcontent-c8="" class="ng-star-inserted">
  <td _ngcontent-c8="">1</td>
 </tr>
 <tr _ngcontent-c8="" class="ng-star-inserted">
  <td _ngcontent-c8="">0</td>
 </tr>   
</tbody>

有人可以向我解释如何解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

在此迭代器中使用另一个迭代器

`<tbody>
   <tr *ngFor="let vals of adjacencyDataVals">
         <td *ngFor="let val of vals">{{ val }}</td> 
    </tr>   
</tbody>

`

答案 1 :(得分:0)

对于任何遇到同样问题的人来说,最终解决方案就是这个问题:

1)定义一个数组

adjacencyDataVals = [];

2)仅将值推送到此数组

for ( let _i = 0; _i < this.adjacencyDataKeys.length; _i++ ) {     
  this.adjacencyDataVals.push(Object.values(this.adjacencyData[0][this.adjacencyDataKeys[_i]][0]));        
}

3)然后像Karthikeyan M V写道:

<tbody>
 <tr *ngFor="let vals of adjacencyDataVals">
   <td *ngFor="let val of vals">{{ val }}</td> 
 </tr>
</tbody>

非常感谢Karthikeyan M V;)