簡體   English   中英

子路由中的延遲加載模塊

[英]lazy load modules in child routing

我只是有一個問題,當我以 angular 延遲加載孩子的孩子時,我的組件沒有加載。 由於某種原因加載了解析器。

詳細地說,我已經在我的應用程序路由模塊中加載了我的子路由。 對於這種情況,我使用前面提到的延遲加載。 這些子路由加載沒有任何問題,但是如果我想在這條路由中加載另一個子路由,就會出現問題。 代碼的結構相同,但由於某種原因,它不能在更深的一層上工作。 你們中是否有人可能有這個用例的代碼示例,或者知道為什么會發生這種情況?

編輯了更多細節:我為 app.module 創建了一個解析器(你可以識別它是否加載了 console.log)。 如果您輸入 URL ([...]stackblitz/first/second),Angulars 的正常行為是加載解析器。 如果我將其聲明為子組件,則不再加載該組件,但解析器仍然加載。

這是鏈接: https : //stackblitz.com/edit/angular-6csggp

此致! :)

個人路線

正如我在我的評論中已經提到的,LazyLoading 的工作原理是一樣的,無論你想要實現它的深度。 我創建了一個小的StackBlitz來舉例說明它是如何工作的。

嵌套路由(兒童)

如果您想將您的路線聲明為子路線(這是您想要通過我閱讀的內容所做的),angular 將嘗試將它們加載為嵌套導航。 粗略地解釋一下,這意味着您的app.component有一個<router-outlet> ,它承載來自您的app-routing.module的父組件。 在您的路由中聲明的子項將依次加載到位於父組件中的<router-outlet>中。 如果多條路由有一些共同點(例如報頭),因此不應在每條路由中重復,則通常使用這種路由方法。

或者,換句話說,導航樹中與每個級別匹配的組件將顯示在彼此下方,而不是相互替換。 因此,在您的情況下,它們可能會解析但沒有<router-outlet>可駐留。

我修改了StackBlitz 的 fork來向您展示嵌套導航如何與LazyLoading一起工作。 此外,一個直接鏈接,因此您可以看到所有內容都在加載,即使直接打開/top-level-nested/first-child/second-childhttps : //angular-juudzm.stackblitz.io/top-level-nested /第一個孩子/第二個孩子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM