Javascript 如何强制路由器更新Angular 2中的当前路由?
我在angular 2中有一个home组件和一个nav面板组件。当用户单击导航面板(侧栏)上的注销时,通过将路由器登录到控制台,当前url将正确报告为“/login”。当用户再次登录时,导航面板中的路由器实例将当前路由报告为“/登录”,当用户登录后,路由器应将其带到主页。因此,用户永远无法通过登录屏幕,浏览器中的视图和url也不会更新 到目前为止,我尝试了以下方法:Javascript 如何强制路由器更新Angular 2中的当前路由?,javascript,html,angular,ecmascript-6,angular2-routing,Javascript,Html,Angular,Ecmascript 6,Angular2 Routing,我在angular 2中有一个home组件和一个nav面板组件。当用户单击导航面板(侧栏)上的注销时,通过将路由器登录到控制台,当前url将正确报告为“/login”。当用户再次登录时,导航面板中的路由器实例将当前路由报告为“/登录”,当用户登录后,路由器应将其带到主页。因此,用户永远无法通过登录屏幕,浏览器中的视图和url也不会更新 到目前为止,我尝试了以下方法: 手动清除浏览器缓存并刷新页面(这似乎解决了问题) 在对ngZone.run()的调用中包装router.navigate调用 正在
{
path: '',
pathMatch: 'full',
component: HomeComponent,
resolve: { author: RouteAuthorResolver },
data: {
panelsectionName: "home"
}
},
doLogout() {
// leave immediately
this.router.navigate(["/login"]);
}
导航面板组件中注销方法的一部分:
{
path: '',
pathMatch: 'full',
component: HomeComponent,
resolve: { author: RouteAuthorResolver },
data: {
panelsectionName: "home"
}
},
doLogout() {
// leave immediately
this.router.navigate(["/login"]);
}
假设您正在引导的组件是
HomeComponent
,那么在它的构造函数中检查登录名,否则重定向到登录组件
constructor(activatedRoute: ActivatedRoute,router:Router){
if(this.activatedRoute.url !== 'login'){
if(!userService.geToken()){
this.router.navigate(["/login"]);
}
}
}
首先,你要做的应该是有效的。我在Pluralsight上的
角度布线
课程中也做了同样的事情。返回路线的值是多少?另外,当使用重定向时,您只需要pathMatch
,而不需要导航到组件。嗨,黛博拉,谢谢您的帮助。我已将pathMatch从路线中删除,但运气不佳。returnRoute在代码中是这样的:“/Projects”,在url中是这样的:”。@DeborahK我在周末也看了你的课程,我想问题可能是路由的顺序,但它们都在一个模块中,而不是多个模块中。另外一条注释:home组件将当前url报告为“/”导航面板组件将其报告为“/login”,因此导航面板似乎优先于当前的url。您是否可以组合一个plunker来演示此问题,以便我们可以查看更具体的内容?谢谢您的建议,但我也没有任何运气。导航仍然没有出现。