我的路线是
{
path:'contacts/:id',
component: contactDetail
}
在
canActivateChild( route: ActivatedRouteSnapshot,
state: RouterStateSnapshot) {
console.log(state.url);
}
state.url 返回/contacts/1
我需要的是匹配的 url/contact/:id
是否有可能获得匹配的 url?
我的路线是
{
path:'contacts/:id',
component: contactDetail
}
在
canActivateChild( route: ActivatedRouteSnapshot,
state: RouterStateSnapshot) {
console.log(state.url);
}
state.url 返回/contacts/1
我需要的是匹配的 url/contact/:id
是否有可能获得匹配的 url?
您将拥有它route.routeConfig.path
:
canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
console.log(route.routeConfig.path);
}
谢谢@Thirumalai murugan
你可以试试这段代码。
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
const currentUser = this.authenticationService.currentUserValue;
if (currentUser) {
// authorised so return true
return true;
}
// not logged in so redirect to login page with the return url
this.router.navigate(['/account']);
return false;
}
使用 ActivatedRouteSnapshot,您可以获取带有参数的路由。检查以下代码是否有帮助。
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
console.log(next['routeConfig']['path']);
}
您可以使用ActivatedRoute
import { ActivatedRoute} from @angular/router';
constructor( private route: ActivatedRoute) {
this.route.params.subscribe(res => {
if(res.id) { //your code }
})
}
您可以使用下一条语句:
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean |
UrlTree {
console.log(next.queryParams);
console.log(next.params);
return true;
}