调用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;
  }

}