我试图通过路由器防护拦截路由更改。所以当我打电话时:
this.router.navigate([“myApp/userProfiles”]);
所以一旦调用它就会通过Guard CanDeactivate接口。守卫需要确定它真正要重定向的位置。 那么有一个属性如下:
this.router.newRoute ??
或者我应该在调用导航方法之前使用全局变量来设置它吗?
答案 0 :(得分:0)
正如您在CanDeactivate
界面中看到的,第四个参数是nextState
。您可以检查它以找到下一条路线的网址。
interface CanDeactivate<T> {
canDeactivate(
component: T,
currentRoute: ActivatedRouteSnapshot,
currentState: RouterStateSnapshot,
nextState?: RouterStateSnapshot
): Observable<boolean> | Promise<boolean> | boolean
}
所以在你的情况下你可以这样做:
canDeactivate(
component: TeamComponent,
currentRoute: ActivatedRouteSnapshot,
currentState: RouterStateSnapshot,
nextState: RouterStateSnapshot
): Observable<boolean>|Promise<boolean>|boolean {
if (nextState.url === '/interesting/path/') {
// do something
else {
return true;
}
}