当条件为假时,Angular 2 * ngIf条件体仍然呈现

时间:2017-02-11 22:14:32

标签: angular typescript angular2-template

我在Angular 2模板中有一个循环,它给我一个错误,因为我的服务_adfService显然为空(即使它在任何错误之前记录为非null。)只是为了尝试让它工作,我将它包装在if语句中,以查看是否可以阻止循环在_adfService恰好为空时呈现。我仍然得到同样的错误:

Cannot read property 'grids' of undefined

为什么我不能阻止循环导致错误,如果Angular 2被认为没有渲染条件的主体?

    <span *ngIf="_adfService != null">
      <li *ngFor="let grid of _adfService.grids" router-active>
        <a class="navlink" [routerLink]="['group/1/grid/']">Grid 1</a>
      </li>
    </span>

1 个答案:

答案 0 :(得分:1)

那是因为你在* ngIf中评估null,这是一个与Javascript / TypeScript中未定义完全不同的值。

要解决此问题,只需将* ngIf更改为:

<span *ngIf="_adfService">

这将评估_adfService变量是否计算为“true”(即,未定义,不为null,不为false,不为零,而不是空字符串),因此如果变量不是,则不呈现* ngFor用您尝试使用的对象初始化。