首页 > 解决方案 > 无法以角度 6 获取当前网址

问题描述

我试图在 auth.gurd 中获取角度 6 中的当前 url(url 不是参数。)这样做的目的是根据角色保护用户可访问性。

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
  }
}

标签: angular

解决方案


您可以在 authguard 中使用它来获取请求 url:

@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


推荐阅读