首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular2 *ngIf不能正常工作

Angular2 *ngIf不能正常工作
EN

Stack Overflow用户
提问于 2017-05-08 13:40:57
回答 3查看 1.6K关注 0票数 0

在我的代码im中,使用*ngIf,它应该在任何时候只显示两者中的一个。但问题是,它只显示第二个,即使第二个不应该在某些时候显示。我使用for循环来显示所有元素,但正如您在图片中所看到的,即使第二个元素的值为-1,也只显示了第二个元素。谢谢你的帮助!

代码:

代码语言:javascript
复制
<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>

图片:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-08 14:48:24

使用div而不是ng模板。您不能在ng-模板中使用语法糖*。

结构指令

星号是“句法糖”,表示更复杂的东西。在内部,角形脱糖分两个阶段。首先,它翻译*ngIf=“.”变成一个模板属性,template="ngIf .“,如下所示。

代码语言:javascript
复制
<div template="ngIf hero">{{hero.name}}</div>

然后,它将模板属性转换为一个元素,包装在主机元素周围,如下所示。

代码语言:javascript
复制
<ng-template [ngIf]="hero">
  <div>{{hero.name}}</div>
</ng-template>
票数 1
EN

Stack Overflow用户

发布于 2017-05-08 15:16:19

更新

正如丹尼尔库克(Daniel)所说,我应该使用div,因为ng模板在相邻时不能很好地工作。而是使用did,并且只有一个ng模板这样做。所以工作代码:

代码语言:javascript
复制
<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>
票数 0
EN

Stack Overflow用户

发布于 2017-05-08 13:52:14

执行{{favorite?.FavoritesIds.indexOf(internship?.InternshipId) \json}来查看变量中的内容

我的技巧是将if语句放在一个单独的函数中。

===可能测试字符串,而它是一个数字。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43849261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档