W3cubDocs

/Angular

CanActivateFn

type-alias

The signature of a function used as a canActivate guard on a Route.

See more...

type CanActivateFn = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;

See also

Description

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 and uses a CanActivateChildFn that checks whether the current user has permission to activate the requested route.

@Injectable()
class UserToken {
}

@Injectable()
class PermissionsService {
  canActivate(currentUser: UserToken, userId: string): boolean {
    return true;
  }
  canMatch(currentUser: UserToken): boolean {
    return true;
  }
}

const canActivateTeam: CanActivateFn =
    (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {
      return inject(PermissionsService).canActivate(inject(UserToken), route.params.id);
    };

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

bootstrapApplication(App, {
  providers: [provideRouter([
    {
      path: 'team/:id',
      component: TeamComponent,
      canActivate: [canActivateTeam],
    },
  ])]
});

© 2010–2023 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://angular.io/api/router/CanActivateFn