在Angular中获取当前路由路径名称的最简单方法是什么?

28
我一直在寻找一个好的方法来获取当前路由的路径名称。这是我能找到的最简单的方法。

我一直在寻找一个好的方法来获取当前路由的路径名称。这是我能找到的最简单的方法。

this.route.snapshot.firstChild.url[0].path

有更好的方法吗?谢谢!

3个回答

39

感谢大家的回答。这是我发现我必须要做的事情。

router.events.subscribe((event: Event) => {
  console.log(event);
  if (event instanceof NavigationEnd ) {
    this.currentUrl = event.url;
  }
});

3
router.events.subscribe((_: NavigationEnd) => this.currentUrl = _.url); 可以简写为: - ssuperczynski
它像魔法一样运行。不要忘记从'@angular/router'导入{ Event,NavigationStart,NavigationEnd,NavigationError }。 - Kamlesh

33

找到当前路径最简单的方法是直接使用

this.router.url

或者你可以像这样使用其事件,在每次路由器更改时检查当前路径。

this.router.events.subscribe((res) => { 
    console.log(this.router.url,"Current URL");
})

这里的 router 是在构造函数中创建实例的。

constructor(private router: Router){ ... }

没有导入甚至没有通过构造函数获取路由器?这是行不通的。 - Chris Vilches
我已经分享了通过构造函数提供路由器的代码。显然需要导入。无论如何,为什么要对@FeloVilches进行负面评价呢? - Pardeep Jain

4
constructor(private route:ActivatedRoute) {
  console.log(route);
}

或者

constructor(private router:Router) {
  router.events.subscribe(...);
}

5
虽然这段代码可能是解决方案,但【包括解释】真的有助于提高您帖子的质量。记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。 - Adam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接