2017-02-11 71 views
0

我在Angular 2模板中有一个循环,因为我的服务_adfService明显为空(即使它在之前记录为非空任何错误。)只是试图让它工作,我把它包装在一个if语句,看我是否可以防止循环渲染,只要_adfService碰巧为null。我仍然得到了同样的错误:Angular 2 * ng如果条件体仍然呈现条件为假

Cannot read property 'grids' of undefined 

为什么我不能阻止如果角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> 
+2

错误不能来自您发布的代码。它可能来自组件中的一些代码。 –

+0

您是否在构造函数中忘记了一个参数属性注释,比如'constructor(readonly _adfService:AdfService)'? –

+0

尝试* ngIf =“_ adfService!== null”或只是* ngIf =“_ adfService”如果也不起作用,则问题存在于其他地方。 – ulou

回答

1

这是因为您正在评估* ngIf中的null,这与Javascript/TypeScript中的undefined完全不同。

为了解决这个问题,只是改变* ngIf这样:

<span *ngIf="_adfService"> 

这将评估是否_adfService变量evaluatues为“true”(即,是不是不确定的,不为空,没有虚假,不零,而不是一个空字符串),因此如果该变量未用您尝试使用的对象进行初始化,则不会呈现* ngFor。