2017-07-21 36 views
0

我實現openseadragon在我angular4項目,openseadragon如果我使用拋出錯誤IF條件父DIV

如果我使用如下它不工作和投擲錯誤空的**無法讀取屬性「的appendChild」,

<div *ngIf="(pictures$ | async).length" > 
    <div id="seadragon-viewer" style="height: 333px;color: #333;background-color: black;"> 
    </div> 
</div> 

但是,如果我在IF條件下直接使用真,那麼它的正常使用,

<div *ngIf="true" > 
    <div id="seadragon-viewer" style="height: 333px;color: #333;background-color: black;"> 
    </div> 
</div> 

不能能解決這個問題,任何幫助將是apprecia特德。

+1

請您分享更多信息 –

+0

@JoséQuintoZamora圖片數據來自ngrx商店,我必須執行我的縮放功能,只有當有圖片,這就是爲什麼我檢查圖片的長度。 但是,如果我使用ngif它拋出錯誤就像無法讀取屬性'appendChild'爲空 –

回答

0

在你的組件進行可變showSeaDragon: boolean = false;

pictures$的加載完成布爾設置爲truepictures$.length>0

<div *ngIf="showSeaDragon" > 
+0

已經嘗試過這個邏輯,但它沒有奏效.. :( –

+0

當你將值記錄到控制檯的值是真的嗎? – hsc

+0

是這是真的,但它是拋出錯誤無法讀取null的屬性'appendChild' –

0

在你的TS文件你通過id獲取元素做appendChildseadragon-viewer。在第二種情況下,您的元素將始終存在於DOM中,因此它工作正常。當*ngIf變爲false它從DOM中刪除整個元素,所以你得到這個錯誤。你可以做兩件事。

  1. 使用[hidden]代替*ngIf
  2. 使用前appendChild檢查提取元素的值(首選)。