我正在使用Angular 6和一个路由保护器来保护应该进行以下操作的编辑路由:
我的路线是这样的/members/:id/edit
我已经有一个名为doesUserIdInUrlMatchUserIdInToken
的函数,它将返回一个布尔值。
我的身份验证保护canActivate函数是这样的:
export class UserEditAuthGuard implements CanActivate {
constructor(
private auth: AuthService,
private activatedR: ActivatedRoute,
private router: Router,
private alertify: AlertifyService,
private userService: UserService
) {}
canActivate(): boolean {
if (this.auth.loggedIn()) {
console.log(this.activatedR.params["id"]);
console.log(this.activatedR.snapshot.paramMap.get("id"));
return true;
}
this.alertify.error("You shall not pass!!!");
this.router.navigate(["/home"]);
return false;
}
// this.userService.doesUserIdInUrlMatchUserIdInToken();
}
这两个控制台日志都返回null
和undefined
。
答案 0 :(得分:1)
使用router.url
然后将其拆分以获取ID的简单方法
ID: any = null;
constructor(router: Router) {
console.log(router.url); // This will print the current url
let URL = this.router.url;
let URL_AS_LIST = URL.split('/');
this.ID = URL_AS_LIST[1];
}