繁体   English   中英

如何在ng2后卫中获得目标路线可以激活?

[英]How to get target route in ng2 guard canActivate?

如何在角度2中获取用户尝试在canActivate防护中打开的路线?

如何让警卫观察每个路线参数变化,例如。 路线内的身份变​​化?

import { Injectable }       from '@angular/core';
import {Observable, Observer, Subject} from "rxjs/Rx";

@Injectable()
export class RightsGuard implements CanActivate {
    constructor(
      private router: Router,
      private route: ActivatedRoute
      // private state: RouterStateSnapshot
    ) { }

    canActivate(): Observable<boolean> | boolean {
      var targetUrl = ???
      // var targetUrl = this.router.url // is showing previous url?
      return true;
    }
}

Angular 2中的建议答案使用private state: RouterStateSnapshot 获取当前路由 private state: RouterStateSnapshot然后this.route.url对我不起作用,因为它抛出DI错误:

Error: Uncaught (in promise): Error: DI Error
Error: DI Error

以下似乎可行,但不能在构造函数中注入路由和状态,因为这会导致错误。

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
  console.log("route-access",state);
}

然而,这导致了每个路线仅调用一次防护的问题。 对于路由参数的更改,例如:id,不调用guard。 但这似乎与3.2路由器中的错误相关:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM