這裏的另一路由方案:角 - 比顯示的URL一個
- 我在
/group/
- 我點擊一組,從而試圖去
/group/:id
- 我AuthGuard被稱爲與激活的路由,解決並檢查
CanActivate
CanActivate
檢測到用戶不應該去的路線。
用戶可能在檢索組列表之間失去了權限,並且他試圖訪問特定的權限。
當前的行爲是,如果我返回false,則url永遠不會被激活。如果我返回true,則url將被激活,但是,整個組件樹將被渲染,並且所有的router-outlet
都需要物理存在。
我想這樣做:
URL應被激活(即/group/:id
在URL和歷史),但顯示應與其他途徑(如/404
或/login
)的頁面。 我堅持這樣一個事實,即地址欄中的網址必須保持原來的/group/:id
。
我曾經想過兩種可能性:
- 具有本地404組件,和隱藏路由器的出口,如果需要顯示404。
但問題是404組件應該是全局的,從根到嵌套的模板不應該顯示。它不僅僅是最後一部分是無效的,而是整個路線。 - 因此,我可以有一個服務存儲關於是否應該顯示404的信息,然後是隱藏router-outlet的頂層組件,並在需要時顯示404。
儘管這些解決方案對我來說似乎並不完美。他們只是解決問題,而不解決問題。
特別是,router-outlet
不能是*ngIf
ed,這意味着即使我顯示404或登錄頁面,DOM將被填充激活的路由的整個網站組件,但沒有任何數據,並且即使用戶不應該看到它。對我來說這似乎很醜陋。 我並不是想解決路由器插座應該存在以解決路由這一事實,我只是想讓角色假裝URL上的路由,並激活另一個路由。
使用Angular實現這種行爲的正確方法是什麼?
感謝
那麼,這並沒有真正回答我的問題...... 一)回退的路線,我已經在使用它,但我想顯示的有效途徑,在帕拉姆後備內容路由無效,即被我的認證守衛拒絕。 b)這個解決方案可能是最漂亮的一個,但作爲實際改變url的缺點。這正是我想要避免的。 – SRLKilling