Angular2:无限路由循环,浏览器崩溃

时间:2017-08-15 22:16:22

标签: angular webpack routing angular2-routing webpack-dev-server

退出我的应用程序时,在路由到我的登录页面期间似乎存在无限循环。几天前,一切似乎都运转良好。这可能是由于Angular或WebPack的错误造成的吗?

以下是一些代码示例:

在app.routing.ts中路由:

 { path: 'login', component: LoginComponent },

路由到登录组件的组件功能

logout() {
    this.authGuard.logout();
    this.portalsService.announceLoggedIn("");
    this.router.navigate(['/login']);
}

一切似乎运行正常,直到logout()的最后一行路由到我的登录页面(router.navigate)。很确定这不是我服务的问题。所有其他路线也都运行得很好,这个问题似乎只是在退出时出现。

以下是用户遇到类似问题的另一个thread on Github。但是他使用的是canActivate()而我并不是这样,我不确定它是否是同一个原因。他提供了一个浏览器的Plunker崩溃,所以检查它可能是有用的,因为它与我在浏览器上的完全相同的体验。小心翼翼,你的浏览器会崩溃lol。

到目前为止,我已经在Chrome和Edge上进行了测试,两者都在注销时崩溃了。大多数时候我必须使用任务管理器来关闭它们。尚未在Mozilla上进行测试,因为我的vendor.js包编译存在问题,可能是一个相关的问题。但它在铬和边缘上的效果非常好。

我不确定究竟是什么问题,因为浏览器崩溃后浏览器崩溃是很难调试的。可能是webpack / angular-cli编译问题。上周这条路线工作得非常好。

其他信息:在VS2017和IIS Express上运行

非常感谢任何输入或分享类似经历。

3 个答案:

答案 0 :(得分:0)

我面对类似的情况,在我的情况下是行:this.router.navigate(['/ login'])
导致重新创建另一个组件,在组件的ngOnInit钩子内是对一个服务的调用,该服务在401服务器错误的情况下调用this.router.navigate(['/ login']),导致无限循环和浏览器崩溃。 我希望这会对你有所帮助。

答案 1 :(得分:0)

我也有类似的问题。

设置了一个不符合条件时重定向到另一页的警卫。因此设置循环和浏览器崩溃也具有相同的警戒。

答案 2 :(得分:0)

您在那里传递了错误的参数:

this.router.navigate(  ['login']  );

这应该是:

this.router.navigateByUrl(  '/login'  );

或者,如果您想通过 URL 导航,只需告诉它:

from datetime import datetime
frm = '%H:%M'  #format
delta = datetime.strptime(df['wake_time'][row_number], frm) - datetime.strptime(df['sleep_time'][row_number], frm)