我有一个家庭组件和角度为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我也在周末看了一下你的课程,我认为这个问题可能是路由排序,但它们都在一个模块中,而不是多个模块。 –