Angular 重定向时路由到错误的路径
Angular Routing to the wrong path when redirected
Angular 8.2.14
所以我的 angular 路由有问题,这里是我的路由模块的代码:
{
path: "hero",
component: HeroListComponent,
canActivate: [AuthGuard],
children: [
{
path: "new",
component: NewHeroComponent
},
{
path: ":id",
component: HeroComponent,
canActivate: [HeroGuard]
}
],
},
我的问题是我在另一个网站上有一个按钮,可以将我重定向到我的 Angular 应用程序,当单击该按钮时,它会打开一个带有 url 的新选项卡,如下所示:
http://localhost:4200/hero/new?power=123&attr=123%20456%20789&city=123&rt=1&rate=80
当用户已经登录时,路由模块工作正常,将他正确地带到 NewHeroComponent 并正确处理查询的参数。
当用户未登录并且必须通过身份验证过程时会出现问题,通常重定向对其他组件没有任何问题,但对于某些组件在这种情况下,路由器尝试打开 HeroComponent 的原因。
当我在我的 HeroGuard 中记录 ActivatedRouteSnapshot 时(它不应该被调用但仍然被调用)我得到这个:
params:
id: "new?power=123&attr=123%20456%20789&city=123&rt=1&rate=80"
重定向非常简单,当用户未登录时,link 保存在 localStorage 中,如果 localStorage 键用于我的重定向,则在用户登录后在我的主要组件中完成重定向使用 this.router.navigate([route]).
设置
预先感谢您的帮助!
经过更多的研究,我发现我使用了错误的功能来导航。
问题:?当 router.navigate([route]) 被调用时,url 被更改为 %3F,结果是 angular 认为它是一个参数。
解决方法:我把router.navigate([route])改成了router.navigateByUrl(route)!
希望这能帮助像我这样的新手! :)
Angular 8.2.14
所以我的 angular 路由有问题,这里是我的路由模块的代码:
{
path: "hero",
component: HeroListComponent,
canActivate: [AuthGuard],
children: [
{
path: "new",
component: NewHeroComponent
},
{
path: ":id",
component: HeroComponent,
canActivate: [HeroGuard]
}
],
},
我的问题是我在另一个网站上有一个按钮,可以将我重定向到我的 Angular 应用程序,当单击该按钮时,它会打开一个带有 url 的新选项卡,如下所示:
http://localhost:4200/hero/new?power=123&attr=123%20456%20789&city=123&rt=1&rate=80
当用户已经登录时,路由模块工作正常,将他正确地带到 NewHeroComponent 并正确处理查询的参数。
当用户未登录并且必须通过身份验证过程时会出现问题,通常重定向对其他组件没有任何问题,但对于某些组件在这种情况下,路由器尝试打开 HeroComponent 的原因。
当我在我的 HeroGuard 中记录 ActivatedRouteSnapshot 时(它不应该被调用但仍然被调用)我得到这个:
params:
id: "new?power=123&attr=123%20456%20789&city=123&rt=1&rate=80"
重定向非常简单,当用户未登录时,link 保存在 localStorage 中,如果 localStorage 键用于我的重定向,则在用户登录后在我的主要组件中完成重定向使用 this.router.navigate([route]).
设置预先感谢您的帮助!
经过更多的研究,我发现我使用了错误的功能来导航。
问题:?当 router.navigate([route]) 被调用时,url 被更改为 %3F,结果是 angular 认为它是一个参数。
解决方法:我把router.navigate([route])改成了router.navigateByUrl(route)!
希望这能帮助像我这样的新手! :)