2

我的路线是

{
path:'contacts/:id',
component: contactDetail
}

canActivateChild( route: ActivatedRouteSnapshot,
state: RouterStateSnapshot) { 
  console.log(state.url); 
}

state.url 返回/contacts/1我需要的是匹配的 url/contact/:id是否有可能获得匹配的 url?

4

5 回答 5

4

您将拥有它route.routeConfig.path

canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { 
  console.log(route.routeConfig.path);
}

谢谢@Thirumalai murugan

于 2019-08-20T07:27:33.427 回答
1

你可以试试这段代码。

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;
    }
于 2019-08-20T07:21:20.320 回答
0

使用 ActivatedRouteSnapshot,您可以获取带有参数的路由。检查以下代码是否有帮助。

canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
    console.log(next['routeConfig']['path']);
}
于 2019-08-20T08:11:08.860 回答
0

您可以使用ActivatedRoute

import { ActivatedRoute} from @angular/router';
 constructor( private route: ActivatedRoute) {
    this.route.params.subscribe(res => {
    if(res.id) { //your code }
    })
}
于 2019-08-20T07:14:58.550 回答
0

您可以使用下一条语句:

canActivate(
  next: ActivatedRouteSnapshot,
  state: RouterStateSnapshot
 ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean |     
UrlTree {
console.log(next.queryParams);
console.log(next.params);

return true;

}

于 2020-09-18T18:36:45.023 回答