CanLoad
Интерфейс, который класс может реализовать, чтобы стать защитой, определяющей, можно ли загружать дочерние маршруты. Если все защиты возвращают true, навигация продолжается. Если хотя бы одна защита возвращает false, навигация отменяется. Если какая-либо защита возвращает UrlTree, текущая навигация отменяется и начинается новая навигация к UrlTree, возвращённому защитой.
Предупреждение об устаревании
API
interface CanLoad {
canLoad(route: Route, segments: UrlSegment[]): MaybeAsync<GuardResult>;
}
canLoad
MaybeAsync<GuardResult>Описание
Интерфейс, который класс может реализовать, чтобы стать защитой, определяющей, можно ли загружать дочерние маршруты. Если все защиты возвращают true, навигация продолжается. Если хотя бы одна защита возвращает false, навигация отменяется. Если какая-либо защита возвращает UrlTree, текущая навигация отменяется и начинается новая навигация к UrlTree, возвращённому защитой.
В следующем примере реализована функция CanLoad, которая определяет, есть ли у текущего пользователя разрешение на загрузку запрошенных дочерних маршрутов.
class UserToken {}
class Permissions {
canLoadChildren(user: UserToken, id: string, segments: UrlSegment[]): boolean {
return true;
}
}
@Injectable()
class CanLoadTeamSection implements CanLoad {
private readonly permissions = inject(Permissions);
private readonly currentUser = inject(UserToken);
canLoad(route: Route, segments: UrlSegment[]): Observable<boolean>|Promise<boolean>|boolean {
return this.permissions.canLoadChildren(this.currentUser, route, segments);
}
}
Здесь определённая функция защиты указывается в объекте Route в конфигурации маршрутизатора:
@NgModule({
imports: [
RouterModule.forRoot([
{
path: 'team/:id',
component: TeamComponent,
loadChildren: () => import('./team').then(mod => mod.TeamModule),
canLoad: [CanLoadTeamSection]
}
])
],
providers: [CanLoadTeamSection, UserToken, Permissions]
})
class AppModule {}
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/CanLoad