调用router.navigate后如何确定新路由?
How to determine new route after call router.navigate?
我正在尝试拦截路由器守卫的路由更改。所以当我打电话时:
this.router.navigate([“myApp/userProfiles”]);
所以一旦调用它就会通过 guard CanDeactivate 接口。警卫需要确定它真正要重定向到哪里。
那么有没有 属性 类似的东西:
this.router.newRoute ??
或者我应该在调用导航方法之前使用全局变量来设置它?
正如您在 CanDeactivate
接口中看到的那样,第四个参数是 nextState
。您可以检查它以找到下一条路线的 url.
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;
}
}
我正在尝试拦截路由器守卫的路由更改。所以当我打电话时:
this.router.navigate([“myApp/userProfiles”]);
所以一旦调用它就会通过 guard CanDeactivate 接口。警卫需要确定它真正要重定向到哪里。 那么有没有 属性 类似的东西:
this.router.newRoute ??
或者我应该在调用导航方法之前使用全局变量来设置它?
正如您在 CanDeactivate
接口中看到的那样,第四个参数是 nextState
。您可以检查它以找到下一条路线的 url.
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;
}
}