重定向时Angular路由到了错误的路径。

问题描述 投票:0回答:1

Angular 8.2.14

我的Angular路由出现了问题,以下是我的路由模块的代码。

  { 
    path: "hero", 
    component: HeroListComponent, 
    canActivate: [AuthGuard], 
    children: [
      { 
        path: "new", 
        component: NewHeroComponent
      },
      { 
        path: ":id", 
        component: HeroComponent, 
        canActivate: [HeroGuard]
      }
    ],
  },

我的问题是,我在另一个网站上有一个按钮,它将我重定向到我的Angular应用,当按钮被点击时,它打开了一个新的标签页,网址是这样的:

http:/localhost:4200heronew?power=123&attr=123%20456%20789&city=123&rt=1&rate=80。

当用户已经登录时,路由模块工作正常,并将他带到NewHeroComponent,并正确处理查询的参数。

当用户没有登录时,问题就会发生。 中,并且必须通过验证过程,通常重定向对其他组件来说是没有任何问题的,但在这种情况下,由于某些原因,路由器试图打开Hero组件。

当我在HeroGuard中记录ActivatedRouteSnapshot时(它不应该被调用,但仍然被调用),我得到了这个。

params:
  id: "new?power=123&attr=123%20456%20789&city=123&rt=1&rate=80"

重定向很简单,当用户没有登录时,链接会被保存在本地存储中,而当用户登录后,重定向会在我的主组件中完成,如果我的重定向的本地存储键是通过使用 This.router.navigate([route]).

先谢谢你的帮助!

angular angular-routing angular-router-guards
1个回答
0
投票

经过更多的研究,我发现我使用了错误的函数来导航。

问题是:当调用router.navigate([route])时,url中的?被改成了%3F,结果是angular认为这是一个参数。

解决方法是 我把router.navigate([route])改成了router.navigateByUrl(route)!

希望这能帮到像我这样的新手!:)

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.