目前的文档只讨论了获取路由参数,而不是实际的路由段。
例如,如果我想找到当前路由的父,这是怎么可能的?
目前的文档只讨论了获取路由参数,而不是实际的路由段。
例如,如果我想找到当前路由的父,这是怎么可能的?
当前回答
import { Router, NavigationEnd } from "@angular/router";
constructor(private router: Router) {
// Detect current route
router.events.subscribe(val => {
if (val instanceof NavigationEnd) {
console.log(val.url);
}
});
}
其他回答
你可以试试
import { Router, ActivatedRoute} from '@angular/router';
constructor(private router: Router, private activatedRoute:ActivatedRoute) {
console.log(activatedRoute.snapshot.url) // array of states
console.log(activatedRoute.snapshot.url[0].path) }
替代的方法
router.location.path(); this works only in browser console.
window。location。pathname给出了路径名。
角RC4:
你可以从@angular/ Router中导入Router
然后注入:
constructor(private router: Router ) {
}
然后调用它的URL参数:
console.log(this.router.url); // /routename
使用这个
import { Router, NavigationEnd } from '@angular/router';
constructor(private router: Router) {
router.events.filter(event => event instanceof NavigationEnd)
.subscribe(event => {
console.log(event);
});
}
主要是。ts进口
import 'rxjs/add/operator/filter';
EDIT
现代的方式
import {filter} from 'rxjs/operators';
router.events.pipe(
filter(event => event instanceof NavigationEnd)
)
.subscribe(event => {
console.log(event);
});
对我来说,在AuthGuardService实现CanActivate访问当前路由时,接受的答案不工作,因为路由还没有完全处理。我在这里回答了同样的问题(https://stackoverflow.com/a/68541653/1479486),但如果你只是想从这里复制粘贴,这是我的解决方案:
const finalUrl = this.router.getCurrentNavigation()?.finalUrl;
const isLoginPage = finalUrl?.root.children['primary'].segments[0]?.path === 'login';
您可以使用ActivatedRoute来获取当前路由器
原文答案(RC版)
我在AngularJS谷歌Group上找到了一个解决方案,非常简单!
ngOnInit() {
this.router.subscribe((url) => console.log(url));
}
这是最初的答案
https://groups.google.com/d/msg/angular/wn1h0JPrF48/zl1sHJxbCQAJ