Redirect to a different component inside @CanActivate in Angular2

Vinz and Tonz picture Vinz and Tonz · Jan 11, 2016 · Viewed 35.2k times · Source

Is there any way we can redirect to a different component from @CanActivate in Angular2 ?

Answer

superjos picture superjos · Aug 26, 2016

As of today, with latest @angular/router 3.0.0-rc.1, here are a couple of references on how to do that through CanActivate guards on routes:

  1. angular 2 reference
  2. Two answers to this SO question, by Nilz11 and by Jason

The main gist of logic looks like:

// ...
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
  if (this.authService.isLoggedIn) {
    // all ok, proceed navigation to routed component
    return true;
  }
  else {
    // start a new navigation to redirect to login page
    this.router.navigate(['/login']);
    // abort current navigation
    return false;
  }
}