为单个`ngFor`迭代创建两个元素?

max*_*pre 10 twitter-bootstrap angular2-template angular

我正在循环一组模型,并希望每个模型显示一个元素.但是,出于CSS的原因,我必须在到达第四个模型时添加另一个元素(我需要clearfix为布局添加一个Bootstrap 元素才能看起来很好).

<div class="jumbotron">
    <ol class="row">
        <li *ngFor="#card of deck; #i = index" class="col-xs-3">
            <h3>{{ card.name }}</h3>
        </li>
    </ol>
</div>
Run Code Online (Sandbox Code Playgroud)

怎么说,如果(i + 1) % 4 === 0,然后li加上另一个<li class="clearfix"></li>

Gün*_*uer 12

这可以使用<ng-container>辅助元素完成

  <div class="jumbotron">
    <ol class="row">
        <ng-container *ngFor="let card of deck" let-i="index"> 
          <li class="col-xs-3">
            <h3>{{ card.name }}</h3>
          </li>
          <li *ngIf="(i + 1) % 4 === 0" class="clearfix"></li>
        </ng-container>
    </ol>
  </div>
Run Code Online (Sandbox Code Playgroud)

另一种方法(在<ng-container>可用之前使用)

这可以ngFor使用带有显式<template>标记的长格式来完成

  <div class="jumbotron">
    <ol class="row">
        <template ngFor let-card [ngForOf]="deck" let-i="index"> 
          <li class="col-xs-3">
            <h3>{{ card.name }}</h3>
          </li>
          <li *ngIf="(i + 1) % 4 === 0" class="clearfix"></li>
        </template>
    </ol>
  </div>
Run Code Online (Sandbox Code Playgroud)

Plunker的例子

另见https://angular.io/docs/ts/latest/api/common/index/NgFor-directive.html