2017-02-11 81 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。