我有一个看起来像这样的对象:
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
,我会得到
错误:找不到类型为“对象”的其他支持对象“ [对象对象]”。 NgFor仅支持绑定到数组等Iterable。
我该如何解决?感谢您的时间! Here is a working snippet
答案 0 :(得分:4)
您可以使用键值管道:
<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>
答案 1 :(得分:1)
除非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>