Angular路由器-获取当前导航过程的目标URL

时间:2019-06-27 14:49:44

标签: angular angular-routing angular-router

我有一个带有嵌套路由的NG模块。

  • 具有main.component的Main.module
  • 带有sub.component的子模块

路径如下所示: http://domain/mainroute/nestedroute

现在,在 sub.component 中,我想根据提供的目标URL(通过用户或外部重定向)来决定重新路由。因此,如果用户直接将嵌套路线作为目标,则我想检查是否让他通过,或者是否将他重定向到其他位置。 为此,我需要找出初始化 sub.component 时输入的URL。

但是,在sub.component中:

constructer(private router: Router){
    console.log(this.router.url)
}

即使输入http://domain/mainroute并直接将其返回,日志仍返回http://domain/mainroute/nestedroute。 这可能是因为导航过程在执行进一步的路由之前先运行sub.component的构造函数。

现在的问题是:在这一点上如何访问完整路线?

2 个答案:

答案 0 :(得分:0)

使用ActivatedRoute获取路径:

constructer(private router: Router,
            private activatedRoute: ActivatedRoute){
   console.log(activatedRoute.snapshot.url[0].path);
}

答案 1 :(得分:0)

如果要防止在特定情况下进入路线,建议您使用angular guards。它是基于路由器的机制,旨在满足此类需求。

如果问题只是获取目标url地址,恐怕此数据在角度路由器中不可用,但是您可以使用window.location.href