我有一个看起来像这样的对象:
obj = {'a': [0, 0, 1, 0], 'b': [1, 0, 0, 1], 'c': [0, 0, 0, 0], 'd': [1, 1, 1, 0]}
我想在这样的表格中显示它:
No | a | b | c | d
0 | 0 | 1 | 0 | 1
1-3 | 0 | 0 | 0 | 1
4-6 | 1 | 0 | 0 | 1
7-9 | 0 | 1 | 0 | 0
//a //b //c //d
我怎么能用ngFor
做到这一点?
这是我的HTML
<table>
<thead>
<tr>
<th scope="col">No</th>
<th scope="col">a</th>
<th scope="col">b</th>
<th scope="col">c</th>
<th scope="col">d</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td></td>
</tr>
<tr>
<td>1-3</td>
<td></td>
</tr>
<tr>
<td>4-6</td>
<td></td>
</tr>
<tr>
<td>6-9</td>
<td></td>
</tr>
</tbody>
<table>
如果我尝试迭代obj
,我得到
错误:无法找到'object'类型的不同支持对象'[object Object]'。 NgFor仅支持绑定到诸如Arrays之类的Iterables。
我怎么解决这个问题?感谢您的时间! Here is a working snippet
您可以使用keyvalue管道:
<div *ngFor="let item of object | keyvalue">
{{item.key}}:{{item.value}}
</div>
文件:https://angular.io/api/common/KeyValuePipe
(适用于Angular 6.1+)
编辑:
您可以将对象更改为:
obj = {'0': [0, 0, 1, 0], '1-3': [1, 0, 0, 1], '4-6': [0, 0, 0, 0], '6-9': [1, 1, 1, 0]}
然后在html中:
<tbody>
<tr *ngFor="let x of obj | keyvalue">
<td>{{x.key}}</td>
<td *ngFor="let data of x.value">{{data}}</td>
</tr>
</tbody>
除非obj
是一个数组,否则不能使用迭代。与此同时,这样做,
<tbody>
<tr>
<td>0</td>
<td *ngFor="let data of obj.a">{{data}}</td>
</tr>
<tr>
<td>1-3</td>
<td *ngFor="let data of obj.b">{{data}}</td>
</tr>
<tr>
<td>4-6</td>
<td *ngFor="let data of obj.c">{{data}}</td>
</tr>
<tr>
<td>6-9</td>
<td *ngFor="let data of obj.d">{{data}}</td>
</tr>
</tbody>