编辑#2
不幸的是,我没有成功地纳入其中任何一个建议。已经很晚了,所以我要去睡觉了,但明天我会尝试更新。
我已经学会了如何使用* ngFor命令,但它看起来只适用于简单的数组。这是我试图迭代的代码。
import {Lesson} from './lesson';
export var LESSONS: Lesson[] = [
{
"idL": 1,
"subject": 'Chapter One',
"points": [
'picture story', 'spelling test', 'words'
]
},
{
"idL": 2,
"subject": 'Words',
"points": [
'words', 'bacon', 'proliferation'
]
}
]
所以我试图访问名为“points”的第二个数组。我不认为它格式不正确,但我无法弄清楚如何访问它。
我确实读过有关angularJs的foreach命令,但是Angular2的文档没有显示这样的命令可用。
有什么建议吗?
答案 0 :(得分:9)
更新(2.0.0)
<table>
<ng-container *ngFor="let lesson of LESSONS; let i = index">
<ng-container *ngFor="let point of lesson.points; let j = index">
<tr>{{point}}</tr>
</ng-container>
</ng-container>
<ng-container>
是一个没有标记到DOM的辅助元素。它允许使用与内联*ngIf
和*ngFor
<强>原始强>
试试这个:
<table>
<template ngFor #lesson [ngForOf]="LESSONS" #i="index">
<template ngFor #point [ngForOf]="lesson.points" #j="index">
<tr>{{point}}</tr>
</template>
</template>
工作示例 Working Plunker.
答案 1 :(得分:2)
这在Angular 4中对我有用,以Pardeep Jain的答案为基础。与StepUps答案几乎相同,但使用ng-containers:
constructor() {
this.data = {
displayArray:[
["Top Row 1st col", "Top Row 2nd col", "Top Row 3rd col"],
["Middle Row 1st col", "Middle Row 2nd col", "Middle Row 3rd col"],
["Bottom Row 1st col", "Bottom Row 2nd col", "Bottom Row 3rd col"]
]
}
};
在模板中:
<table >
<ng-container *ngFor="let row of data.displayArray; let i = index">
<tr>
<ng-container *ngFor="let col of row; let j = index">
<td>{{col}}</td>
</ng-container>
</tr>
</ng-container>
</table>
我不需要索引,但我留下了它们以防其他人需要它们。
答案 2 :(得分:1)
尝试使用此管道
@Pipe({ name: 'values', pure: false })
export class ValuesPipe implements PipeTransform {
transform(value: any, args: any[] = null): any {
return Object.keys(value).map(key => value[key]);
}
}
<div *ng-for="#value of object | values"> </div>