• Overview
@angular/router

CanActivate

interface

Interface that a class can implement to be a guard deciding if a route can be activated. If all guards return true, navigation continues. If any guard returns false, navigation is cancelled. If any guard returns a UrlTree, the current navigation is cancelled and a new navigation begins to the UrlTree returned from the guard.

Description

Interface that a class can implement to be a guard deciding if a route can be activated. If all guards return true, navigation continues. If any guard returns false, navigation is cancelled. If any guard returns a UrlTree, the current navigation is cancelled and a new navigation begins to the UrlTree returned from the guard.

The following example implements a CanActivate function that checks whether the current user has permission to activate the requested route.

          
class UserToken {}class Permissions {  canActivate(): boolean {    return true;  }}@Injectable()class CanActivateTeam implements CanActivate {  constructor(private permissions: Permissions, private currentUser: UserToken) {}  canActivate(    route: ActivatedRouteSnapshot,    state: RouterStateSnapshot  ): MaybeAsync<GuardResult> {    return this.permissions.canActivate(this.currentUser, route.params.id);  }}

Here, the defined guard function is provided as part of the Route object in the router configuration:

          
@NgModule({  imports: [    RouterModule.forRoot([      {        path: 'team/:id',        component: TeamComponent,        canActivate: [CanActivateTeam]      }    ])  ],  providers: [CanActivateTeam, UserToken, Permissions]})class AppModule {}
Jump to details