我在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>
答案 0 :(得分:1)
那是因为你在* ngIf中评估null,这是一个与Javascript / TypeScript中未定义完全不同的值。
要解决此问题,只需将* ngIf更改为:
<span *ngIf="_adfService">
这将评估_adfService变量是否计算为“true”(即,未定义,不为null,不为false,不为零,而不是空字符串),因此如果变量不是,则不呈现* ngFor用您尝试使用的对象初始化。