angular - 将 ngFor 变量传递给 ngIf 模板

标签 angular ngfor angular-ng-if ng-template

如果使用带有 then/else 语法的模板,如何将 ngFor 循环中的当前变量传递给 ngIf?

看起来它们在内联使用时可以正常通过,但不能从模板访问,例如:

<ul *ngFor="let number of numbers">
  <ng-container *ngIf="number % 2 == 0; then even_tpl; else odd_tpl"><>/ng-container>
</ul>


<ng-template #odd_tpl>
  <li>Odd: {{number}}</li>  
</ng-template>

<ng-template #even_tpl>
  <li>Even: {{number}}</li>  
</ng-template>

模板似乎根本无法访问 number,但如果内联使用它会起作用。

以下链接中的工作和非工作版本的完整示例:plunkr

最佳答案

您只需要使用[ngTemplateOutletContext] Read More

以下是实现该目标的方法:

<div>
  <h3>All Templates</h3>
  <ul *ngFor="let number of numbers">
    <ng-container [ngTemplateOutlet]='number % 2 == 0 ? even_tpl : odd_tpl' [ngTemplateOutletContext]="{number:number}"></ng-container>
  </ul>
</div>

<ng-template #odd_tpl let-number='number'>
  <li>Odd: {{number}}</li>  
</ng-template>

<ng-template #even_tpl let-number='number'>
  <li>Even: {{number}}</li>  
</ng-template>

WORKING DEMO

关于angular - 将 ngFor 变量传递给 ngIf 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48204477/

相关文章:

angular - 我无法使用 Angular Material 的 mat-grid-tile 自定义样式属性

javascript - 列表未定义 angular2

ionic2 - ionic 2 : *ngFor not displaying data

javascript - 如何从 *ngIf 指令中启动一个函数?

angularjs - 如何将 ng if 范围传递给父范围

Angular 5 Form重置显示错误返回 - ReactiveFormsModule

android - IONIC 3 'at' 类型不存在 'ILocalNotification

棱 Angular 分明!和奇偶

javascript - Angular 中 *ngFor 的减量索引

angular - 如何使用 ngIf 设置 NaN 值的条件以显示/隐藏 View | Angular 6