我創建了一個 stackblitz 來嘗試說明在父級外部顯示子路由時遇到的問題。相反,該應用程式有一個類似但幾乎相反的問題:當導航到沒有子 url 的祖父路由時,它將孫子組件放置在祖父組件中,而不涉及子組件。即使孫子只定義在孩子身上。
有 2 個嵌套布局組件:
LayoutComponent(祖父母 - 定義為 app.routing.ts 中路徑的組件:'')StoreLayoutComponent(父級 - 定義為 store.routing.ts 中路徑的組件:'store')- 和一個名為
DashboardComponent(child) 的組件。
StoreLayoutComponent有一個名為“dashboard”的子路由,它顯示一個DashboardComponent.
導航到“商店/儀表板”應該DashboardComponent在StoreLayoutComponent. 確實如此。
導航到“商店”應該是無效路線,而是DashboardComponent直接在LayoutComponent. 它永遠不會加載StoreLayoutComponent,即使那是該路由的父組件,并且 'DashboardComponent' 甚至沒有在 LayoutComponent 模塊中定義。
為什么這是一條有效的路線,以及角度如何在祖父母中顯示僅定義為父母的孩子的組件?
https://stackblitz.com/edit/angular-ivy-xqtxla
uj5u.com熱心網友回復:
導航到“商店”應該是無效的路線,而是直接在 LayoutComponent 中顯示 DashboardComponent。它從不加載 StoreLayoutComponent,即使那是該路由的父組件,并且 'DashboardComponent' 甚至沒有在 LayoutComponent 模塊中定義。
導航到“商店”不會是無效路線,但會加載 StoreModule 并顯示StoreLayoutComponent為它與''路徑匹配。
在您的情況下,它不是加載StoreLayoutComponent,而是加載,DashboardComponent因為您是StoreDashboardModule在StoreModule匯入陣列中匯入的。也定義了StoreDashboardModule一個空路徑''路由,并且由于您正在匯入它,這就是與“商店”匹配的內容。
在“存盤/儀表板”的情況下,它正確匹配'dashboard'子陣列中的路徑。
PS:由于您是延遲加載StoreDashboardModule,因此不應直接在StoreModule匯入陣列中匯入。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/416721.html
標籤:
