使用 ngIf withngFor

虽然不允许在同一个 div 中使用*ngIf*ngFor(它会在运行时出错),但你可以将*ngIf 嵌套在*ngFor 中以获得所需的行为。

示例 1:一般语法

<div *ngFor="let item of items; let i = index">
  <div *ngIf="<your condition here>">

   <!-- Execute code here if statement true -->

  </div>
</div>

示例 2:显示具有偶数索引的元素

<div *ngFor="let item of items; let i = index">
  <div *ngIf="i % 2 == 0">
    {{ item }}
  </div>
</div>

缺点是需要添加额外的外部 div 元素。

但是考虑一下需要迭代 div 元素的这个用例 (使用* ngFor),并且还包括检查是否需要删除元素(使用* ngIf),但是不希望添加额外的 div。在这种情况下,你可以使用 template 标签作为* ngFor:

<template ngFor let-item [ngForOf]="items">
    <div *ngIf="item.price > 100">
    </div>
</template>

这样就不需要添加额外的外部 div,而且 <template> 元素也不会添加到 DOM 中。从上面的例子中添加到 DOM 中的唯一元素是迭代的 div 元素。

注意:在 Angular v4 中,<template> 已被弃用,转而使用 <ng-template>,并将在 v5 中删除。在 Angular v2.x 版本中,<template> 仍然有效。