2017-05-03 104 views
0

使用角2不能使用* ngFor与* ngIf

当我做到这一点:

<ul> 
    <template *ngFor="let flag of [1,2,3,4]"> 
     <li *ngIf="flag == 1"> 
      some data 
     </li> 
    </template> 
</ul> 

我得到它

<ul> 
    <!--template bindings={ 
     "ng-reflect-ng-for-of": "1,2,3,4" 
    }--> 
    <!--template bindings={}--> 
    <!--template bindings={}--> 
    <!--template bindings={}--> 
    <!--template bindings={}--> 
</ul> 

它无法显示。 我需要在* ngFor显示<li>只有当item.flagsExplain[flag]设置

+0

请给出[MCVE]包括输入对此。 – jonrsharpe

+0

更新了问题 –

+0

但是输入*在哪里?什么是“物品”? 'service'? – jonrsharpe

回答

1

句法糖:

<ul> 
    <ng-container*ngFor="let flag of service.flagsCount()"> 
     <li *ngIf="item.flagsExplain[flag]"> 
      {{ service.flagLabel(flag) }} 
      <b *ngIf="item.flagsExplain[flag] != 1"> 
       : {{ item.flagsExplain[flag] }} 
      </b> 
     </li> 
    </ng-container> 
</ul> 

,如果你想使用template标签,你需要使用这种形式:

<template ngFor let-item [ngForOf]="items" let-i="index" [ngForTrackBy]="trackByFn"> 
    <li>...</li> 
</template> 

和in Angular 4:

<ng-template ngFor let-item [ngForOf]="items" let-i="index" [ngForTrackBy]="trackByFn"> 
    <li>...</li> 
</ng-template> 

使你的代码看起来就像这样:

<ul> 
    <template ngFor let-flag [ngForOf]="service.flagsCount()"> 
     <li *ngIf="item.flagsExplain[flag]"> 
      some data 
     </li> 
    </template> 
</ul> 

P/S:在角4

文档这里ng-template替换template标签:https://angular.io/docs/ts/latest/api/common/index/NgForOf-directive.html

+0

谢谢,它的工作! –

+0

请看看我更新的答案。 –