2016-07-07 69 views
1

我正在尋找一些關於Angular2的預期設計是用於登錄還是登錄視圖的建議。Angular2路由設計 - 默認導航組件與登錄

如果我的用戶登錄,我想要一個默認顯示的導航和菜單欄組件 - 因此我會把它放在顯示當前路由視圖的router-outlet之外。

路由是由路由守護,如果用戶沒有登錄其重定向到一個登錄頁面的保護。

這裏的漁獲艱難的,我顯然不希望菜單和導航顯示,如果用戶尚未登錄。

那麼這種情況下的預期設計是什麼?我是否需要使用2個路由器插座,一個用於登錄vs!loggedIn視圖,另一個用於實際路由組件?

回答

0

由於您爲將來的後端調用保存了一個令牌,因此您可以* ngIf和詢問您的本地存儲服務,或者如果用戶之前根據令牌的存在或以前的任何邏輯使用。 這樣做這樣的事情:

<header id="mysupersecretheader" *ngIf="loggedIn"></header> 

如果結果是假的,你會得到這樣的輸出HTML:

<!--template bindings={ 
    "ng-reflect-ng-if": "false" 
}--> 

這甚至不會暴露什麼打算在那裏。

由於一切都在不斷變化,你應該閱讀發行說明和文檔,它真的有幫助! Here is the template syntax section

+0

謝謝!最初,這對我來說並不適用,因爲一些CSS設計問題,但最終我決定css必須改變,因爲ngIf確實是處理這種情況的最佳方式。乾杯,湯姆 – TommyF

1

但是當您按下瀏覽器的後退按鈕時,這種方法會中斷。 即它會帶你到有效登錄的登錄頁面。你可以看到導航欄。

+0

你是對的。任何解決方案? – TommyF

+0

我正在使用全局事件發射器,它將發射將在AuthGuard中的事件'showNavBar'。它在應用程序組件的構造函數中訂閱。 – user1882613