CanActivateFn
Сигнатура функции, используемой в качестве защиты canActivate для Route.
API
type CanActivateFn = ( route: ActivatedRouteSnapshot, state: RouterStateSnapshot, ) => MaybeAsync<GuardResult>
Описание
Сигнатура функции, используемой в качестве защиты canActivate для Route.
Если все защиты возвращают true, навигация продолжается. Если хотя бы одна защита возвращает false, навигация отменяется. Если хотя бы одна защита возвращает UrlTree, текущая навигация отменяется и начинается новая навигация к UrlTree, возвращённому защитой.
В следующем примере реализуется и используется CanActivateFn, проверяющая, есть ли у текущего пользователя разрешение на активацию запрошенного маршрута.
@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']);
};
Здесь определённая функция защиты указывается как часть объекта Route в конфигурации маршрутизатора:
bootstrapApplication(App, {
providers: [
provideRouter([
{
path: 'team/:id',
component: TeamComponent,
canActivate: [canActivateTeam],
},
]),
],
});
Super-powered by Google ©2010–2025.
Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
https://angular.dev/api/router/CanActivateFn