2016-02-22 28 views
1

我正在使用Angular2,並且有一個模板使用ngFor來顯示div DIV1,如果標誌爲true else else顯示另一個div DIV2。 該標誌在組件的ngOnInit()方法中通過AJAX從服務器中檢索。AJAX導致效果不一致

問題是,如果標誌被初始化爲true,則將bue作爲false進行檢索,然後當頁面最初呈現時,DIV1會呈現並非常快速消失,並顯示DIV2。這很煩人,用戶可以注意到臨時不一致的視圖呈現(尤其是在AJAX調用較慢的情況下)。

這是一個簡單的例子,因此我不提供一個例子,因爲在這裏我不想測試上述功能是否工作。

問題是我應該如何處理這個和類似的情況,以便只顯示正確的div?

+0

不是真正的angular2問題(:您可以隱藏默認情況下,或使用看起來類似於其他div的DIV0,直到ajax已解決... – Sasxa

+0

對Angular2方法感興趣,例如,如果有一個攔截器顯示一個微調器,添加javascript標記 –

回答

2

您可以添加另一個標誌,表示如果該值已檢索和包裝你的內容在*ngIf或使用hidden

<div *ngIf="realValueRetrieved"> 
<!-- <div [hidden]="realValueRetrieved"> --> 
    <div *ngIf="flag"> 
    </div> 
</div> 

,並設置realValueRetrievedtrue如果是false,否則不改變。

其實有無限的方式來處理這個問題,這取決於你真正想要什麼。顯示一個微調器,不顯示任何內容,當值到達並顯示內容時使用動畫,...

+0

因此,要麼隱藏內容(直接或間接),直到我得到真正的價值或逐步呈現視圖組件,直到現在我已經遵循了第二種方法,但我認爲第一種方法更好。 –