我有一個家庭組件和角度爲2的導航面板組件。當用戶在導航面板(側欄)上單擊註銷時,通過將路由器記錄到控制檯,將當前URL正確報告爲「/ login」。當用戶再次登錄時,導航面板中的路由器實例在用戶登錄後將當前路由報告爲「/ login」,路由器應將它們帶到主頁。因此,用戶永遠無法越過登錄屏幕,並且瀏覽器中的視圖和網址不會更新。如何強制路由器更新Angular 2中的當前路由?
到目前爲止,我已經試過如下:
- 手動清除瀏覽器緩存並刷新頁面(這似乎是解決這個問題)
- 結束語中ngZone通話的電話router.navigate。運行()
- 在主件組件的構造函數中清除Angular 2的模板緩存。
下面是一些代碼相關部分: 在用戶登錄後,處理導航(在login.component.ts)的方法
private doAfterLoggedIn() {
let returnRoute = this.route.snapshot.queryParams["ReturnUrl"] || "/";
this.toaster.toast({
title: `Welcome back!`,
duration: 2000
});
this.router.navigate([returnRoute]);
}
適用於家庭的組件的路徑:
{
path: '',
pathMatch: 'full',
component: HomeComponent,
resolve: { author: RouteAuthorResolver },
data: {
panelsectionName: "home"
}
},
註銷方法在NAV面板組分A部分:
doLogout() {
// leave immediately
this.router.navigate(["/login"]);
}
對於初學者來說,你正在嘗試做的事情應該是有效的。我在Pluralsight的「Angular Routing」課程中做了同樣的事情。 'returnRoute'的價值是什麼?此外,使用重定向時只需要'pathMatch',而不是在導航到組件時。 – DeborahK
黛博拉,謝謝你的幫助。我從路線中移除了pathMatch,但沒有運氣。 returnRoute看起來像這樣:代碼中的「/ Projects」,如下所示:url:「https:// localhost:44358/login?ReturnUrl =%2FProjects」。 –
@DeborahK我也在週末看了一下你的課程,我認爲這個問題可能是路由排序,但它們都在一個模塊中,而不是多個模塊。 –