Angular 2如何迭代多维数组?

时间:2016-05-07 14:12:44

标签: arrays angular

编辑#2

不幸的是,我没有成功地纳入其中任何一个建议。已经很晚了,所以我要去睡觉了,但明天我会尝试更新。

感谢Pradeep Jain的帮助。我也会尝试邪恶的头脑建议的管道。

我已经学会了如何使用* 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的文档没有显示这样的命令可用。

有什么建议吗?

3 个答案:

答案 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>