相当于<template * ngfor =“”in =“”angular =“”2?=“”

时间:2016-09-02 20:05:51

标签: javascript angular

=“”

我想要做这样的事情:

<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。这样做的正确方法是什么?

3 个答案:

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