[英]Get target route URL in CanActivate guard Lazy load modules Angular
[英]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.