2017-10-13 99 views
1

以用戶全局對象爲例。對於沒有刷新瀏覽器的單頁網頁應用程序,第一項可能會填充服務中的用戶對象。儘早以角度實例化服務

但是,說,該網址仍被用作鏈接去應用程序的不同路線。在什麼時候,在路由中使用用戶對象的每個組件都應該從服務器加載用戶對象?由於服務異步加載user,因此當前路由中的這些組件在該用戶對象可用之前肯定能夠獲得用戶?

我可能會問錯誤的問題,因爲我想解決這個問題。所以我的想法是,如果我可以在所有其他組件之前先加載服務對象,那麼它就解決了。

我想如果我把服務放在app.component.ts中,但沒關係。其他組件仍在實例化,而用戶仍然undefined

回答

4

您可以使用APP_INITIALIZER確保在Angular初始化應用程序之前加載該值,或者可以使用延遲路由直到數據可用的警衛。

+0

我已經測試了這個解決方案見。有用。但是,這仍然是角碼標記爲實驗性的?在我看來,除了這個實現我想要的東西外別無選擇 - 無論輸入什麼路由,都要實例化一些服務。 https://github.com/angular/angular/blob/4.4.5/packages/core/src/application_tokens.ts#L64-L64 – Hao

+0

它被標記爲實驗沒有多大意義。他們可能會考慮最終重新設計這個功能,但是自2.0.0-alpha以來,它一樣。 –