在我的代码im中,使用*ngIf,它应该在任何时候只显示两者中的一个。但问题是,它只显示第二个,即使第二个不应该在某些时候显示。我使用for循环来显示所有元素,但正如您在图片中所看到的,即使第二个元素的值为-1,也只显示了第二个元素。谢谢你的帮助!
代码:
<ng-template let-internship="rowData" pTemplate="body" *ngIf="favorite?.FavoritesIds.indexOf(internship?.InternshipId) === -1;"><!--TODO BRIAN ngif-->
<a class="btn btn-default" [routerLink]="['/student/stageopdrachten', internship.InternshipId, false]"><!--Not shown TODO-->
<i class="glyphicon"></i>Meer
</a>
</ng-template>
<ng-template let-internship="rowData" pTemplate="body" *ngIf="favorite?.FavoritesIds.indexOf(internship?.InternshipId) !== -1;"><!--TODO BRIAN ngif-->
<a class="btn btn-default" [routerLink]="['/student/stageopdrachten', internship.InternshipId, true]"><!--always shown-->
<i class="glyphicon"></i>Meer{{favorite?.FavoritesIds.indexOf(internship?.InternshipId)}}
</a>
</ng-template>图片:

发布于 2017-05-08 14:48:24
使用div而不是ng模板。您不能在ng-模板中使用语法糖*。
星号是“句法糖”,表示更复杂的东西。在内部,角形脱糖分两个阶段。首先,它翻译*ngIf=“.”变成一个模板属性,template="ngIf .“,如下所示。
<div template="ngIf hero">{{hero.name}}</div>然后,它将模板属性转换为一个元素,包装在主机元素周围,如下所示。
<ng-template [ngIf]="hero">
<div>{{hero.name}}</div>
</ng-template>发布于 2017-05-08 15:16:19
更新
正如丹尼尔库克(Daniel)所说,我应该使用div,因为ng模板在相邻时不能很好地工作。而是使用did,并且只有一个ng模板这样做。所以工作代码:
<ng-template let-internship="rowData" pTemplate="body" ><!--TODO BRIAN ngif -->
<div *ngIf="favorite?.FavoritesIds.indexOf(internship?.InternshipId) === -1">
<a class="btn btn-default" [routerLink]="['/student/stageopdrachten', internship.InternshipId, false]"><!--niet bestaat TODO-->
<i class="glyphicon"></i>Meer
</a>
</div>
<div *ngIf="favorite?.FavoritesIds.indexOf(internship?.InternshipId) != -1;">
<a class="btn btn-default" [routerLink]="['/student/stageopdrachten', internship.InternshipId, true]"><!--wel bestaat-->
<i class="glyphicon"></i>Meer{{favorite?.FavoritesIds.indexOf(internship?.InternshipId)}}
</a>
</div>
</ng-template>发布于 2017-05-08 13:52:14
执行{{favorite?.FavoritesIds.indexOf(internship?.InternshipId) \json}来查看变量中的内容
我的技巧是将if语句放在一个单独的函数中。
===可能测试字符串,而它是一个数字。
https://stackoverflow.com/questions/43849261
复制相似问题