我想要做这样的事情:
<div *ngFor="let parent of parents">
<div *ngFor="let child of parent.children">
</div>
</div>
但我不想要额外的外部div。根据我能够找到的搜索,在Angular 1中,我可以通过这样做来实现这一点:
<template *ngFor="let parent of parents">
<div *ngFor="let child of parent.children">
</div>
</template>
但这似乎并不适用于Angular 2。这样做的正确方法是什么?
答案 0 :(得分:19)
我认为这应该适合你:
<ng-template ngFor let-parent [ngForOf]="parents">
<div *ngFor="let child of parent.children">
</div>
</ng-template>
您可以在这里阅读更多内容:
https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template
您现在也可以使用:
<ng-container *ngFor="let parent of parents">
<div *ngFor="let child of parent.children">
</div>
</ng-container>
这里的优点是它具有与普通dom元素相同的语法。
答案 1 :(得分:5)
索引使用let-i="index"
:
<template ngFor let-hero [ngForOf]="heroes" let-i="index" let-odd="odd">
<div [class.odd]="odd">({{i}}) {{hero.name}}</div>
</template>
更多信息: https://angular.io/docs/ts/latest/guide/structural-directives.html#!#microsyntax
答案 2 :(得分:5)
<ng-container>
的行为类似于<template>
标记(它未添加到DOM中),但允许使用更方便的*foo
结构指令语法:
<ng-container *ngFor="let parent of parents">
<div *ngFor="let child of parent.children">
</div>
</ng-container>
有关NgFor
的更多详情,请参阅https://angular.io/docs/ts/latest/api/common/index/NgFor-directive.html