无法获取角度为6的当前网址

时间:2018-10-03 05:52:37

标签: angular

我试图在auth.gurd中获取角度为6的当前网址(网址不是参数。),目的是按照角色保护用户的可访问性。

console.log(this.router.url);

我只是在canActivate()功能的auth.gurd中执行此操作。 这里的问题是。我收到一个旧网址。 例如我现在在/ admin / dashboard,然后它将打印/,如果我单击/ admin / orders,则它将打印/ admin / dashboard。

我尝试了所有其他方式,例如快照和其他解决方案。

constructor(private api: ApiHttpService, private router: Router,private route:ActivatedRoute) {
}

canActivate():boolean {
console.log(this.router.url);
if(this.api.loggedIn()) {
  return true;
} else {
  this.router.navigate([''])
  return false
}
}

谢谢

1 个答案:

答案 0 :(得分:3)

您可以在authguard中使用此请求网址:

@Injectable()
export class HasPermissionService implements CanActivate {

   private permissions = [];

   constructor(private _core: CoreService) { 
     this.permissions = this._core.getPermission();
   } 


   canActivate(
      route: ActivatedRouteSnapshot,
      state: RouterStateSnapshot
    ): Observable<boolean>|Promise<boolean>|boolean {
       //check here
    }
}

在canActivate()中传递ActivatedRouteSnapshot和RouterStateSnapshot作为参数,它将为您提供请求的URL。

您可以在此处获得更多信息:CanActivate