Маршрут
Объект конфигурации, определяющий один маршрут. Набор маршрутов объединяется в массив Routes, чтобы определить конфигурацию Router. Маршрутизатор пытается сопоставить сегменты заданного URL с каждым маршрутом, используя параметры конфигурации, определённые в этом объекте.
API
interface Route {
title?: string | Type<Resolve<string>> | ResolveFn<string> | undefined;
path?: string | undefined;
pathMatch?: "prefix" | "full" | undefined;
matcher?: UrlMatcher | undefined;
component?: Type<any> | undefined;
loadComponent?: (() => any) | undefined;
redirectTo?: string | RedirectFunction | undefined;
outlet?: string | undefined;
canActivate?: (CanActivateFn | DeprecatedGuard)[] | undefined;
canMatch?: (CanMatchFn | DeprecatedGuard)[] | undefined;
canActivateChild?: (CanActivateChildFn | DeprecatedGuard)[] | undefined;
canDeactivate?: (DeprecatedGuard | CanDeactivateFn<any>)[] | undefined;
canLoad?: (DeprecatedGuard | CanLoadFn)[] | undefined;
data?: Data | undefined;
resolve?: ResolveData | undefined;
children?: Routes | undefined;
loadChildren?: LoadChildrenCallback | undefined;
runGuardsAndResolvers?: RunGuardsAndResolvers | undefined;
providers?: (EnvironmentProviders | Provider)[] | undefined;
}
title
string | Type<Resolve<string>> | ResolveFn<string> | undefinedИспользуется для задания заголовка страницы маршрута. Это может быть статическая строка или Injectable, реализующий Resolve.
path
string | undefinedПуть для сопоставления. Нельзя использовать вместе с пользовательской функцией matcher. Строка URL, использующая нотацию сопоставления маршрутизатора. Может быть подстановочным шаблоном (**), соответствующим любому URL (см. примечания по использованию ниже). По умолчанию — "/" (корневой путь).
pathMatch
"prefix" | "full" | undefinedСтратегия сопоставления пути: 'prefix' или 'full'. По умолчанию используется 'prefix'.
По умолчанию маршрутизатор проверяет элементы URL слева направо, чтобы определить, соответствует ли URL заданному пути, и останавливается при совпадении с конфигурацией. При этом конфигурация должна соответствовать каждому сегменту URL. Например, '/team/11/user' соответствует префиксу 'team/:id', если один из дочерних маршрутов соответствует сегменту 'user'. То есть URL '/team/11/user' соответствует конфигурации {path: 'team/:id', children: [{path: ':user', component: User}]}, но не соответствует ей при отсутствии дочерних маршрутов, как в {path: 'team/:id', component: Team}.
Стратегия сопоставления пути 'full' проверяет весь URL целиком. Это важно при перенаправлении маршрутов с пустым путём. В противном случае, поскольку пустой путь является префиксом любого URL, маршрутизатор применит перенаправление даже при переходе к целевому адресу, создав бесконечный цикл.
matcher
UrlMatcher | undefinedПользовательская функция сопоставления URL. Нельзя использовать вместе с path.
component
Type<any> | undefinedКомпонент, который нужно создать при совпадении пути. Может быть пустым, если компоненты указаны в дочерних маршрутах.
loadComponent
(() => any) | undefinedОбъект, задающий компонент с отложенной загрузкой.
redirectTo
string | RedirectFunction | undefinedURL или функция, возвращающая URL для перенаправления при совпадении пути.
Адрес считается абсолютным, если URL начинается с косой черты (/) или функция возвращает UrlTree; в противном случае он задаётся относительно URL пути.
RedirectFunction выполняется в контексте внедрения зависимостей, поэтому может вызывать inject для получения необходимых зависимостей.
Если это свойство не задано, маршрутизатор не выполняет перенаправление.
outlet
string | undefinedИмя объекта RouterOutlet, в который можно поместить компонент при совпадении пути.
canActivate
(CanActivateFn | DeprecatedGuard)[] | undefinedМассив CanActivateFn или токенов DI для поиска обработчиков CanActivate(), определяющих, разрешено ли текущему пользователю активировать компонент. По умолчанию активировать компонент может любой пользователь.
Если вместо токенов DI используется функция, она может вызывать inject для получения необходимых зависимостей. Этот вызов inject должен выполняться в синхронном контексте.
canMatch
(CanMatchFn | DeprecatedGuard)[] | undefinedМассив CanMatchFn или токенов DI для поиска обработчиков CanMatch(), определяющих, разрешено ли текущему пользователю сопоставить Route. По умолчанию сопоставить можно любой маршрут.
Если вместо токенов DI используется функция, она может вызывать inject для получения необходимых зависимостей. Этот вызов inject должен выполняться в синхронном контексте.
canActivateChild
(CanActivateChildFn | DeprecatedGuard)[] | undefinedМассив CanActivateChildFn или токенов DI для поиска обработчиков CanActivateChild(), определяющих, разрешено ли текущему пользователю активировать дочерний компонент. По умолчанию активировать дочерний компонент может любой пользователь.
Если вместо токенов DI используется функция, она может вызывать inject для получения необходимых зависимостей. Этот вызов inject должен выполняться в синхронном контексте.
canDeactivate
(DeprecatedGuard | CanDeactivateFn<any>)[] | undefinedМассив CanDeactivateFn или токенов DI для поиска обработчиков CanDeactivate(), определяющих, разрешено ли текущему пользователю деактивировать компонент. По умолчанию деактивировать компонент может любой пользователь.
Если вместо токенов DI используется функция, она может вызывать inject для получения необходимых зависимостей. Этот вызов inject должен выполняться в синхронном контексте.
canLoad
(DeprecatedGuard | CanLoadFn)[] | undefinedМассив CanLoadFn или токенов DI для поиска обработчиков CanLoad(), определяющих, разрешено ли текущему пользователю загружать компонент. По умолчанию загружать компонент может любой пользователь.
Если вместо токенов DI используется функция, она может вызывать inject для получения необходимых зависимостей. Этот вызов inject должен выполняться в синхронном контексте.
data
Data | undefinedДополнительные данные, заданные разработчиком и передаваемые компоненту через ActivatedRoute. По умолчанию дополнительные данные не передаются.
resolve
ResolveData | undefinedКарта токенов DI для поиска разрешителей данных. См. Resolve.
children
Routes | undefinedМассив объектов дочерних Route, задающий вложенную конфигурацию маршрутов.
loadChildren
LoadChildrenCallback | undefinedОбъект, задающий дочерние маршруты с отложенной загрузкой.
runGuardsAndResolvers
RunGuardsAndResolvers | undefinedПолитика запуска защитников и разрешителей для маршрута.
Защитники и/или разрешители всегда запускаются при активации или деактивации маршрута. Если маршрут не изменился, по умолчанию используется поведение, аналогичное paramsChange.
paramsChange : Повторно запускать защитники и разрешители при изменении пути или параметров пути. Параметры запроса не учитываются. Этот вариант используется по умолчанию.
-
always: Запускать при каждом выполнении. -
pathParamsChange: Повторно запускать защитники и разрешители при изменении параметров пути. Параметры матрицы и запроса не сравниваются. -
paramsOrQueryParamsChange: Запускать при изменении пути, параметров матрицы или параметров запроса. -
pathParamsOrQueryParamsChange: Повторно запускать защитники и разрешители при изменении параметров пути или параметров запроса. Параметры матрицы не учитываются.
providers
(EnvironmentProviders | Provider)[] | undefinedМассив Provider для этого Route и его children.
Router создаст новый EnvironmentInjector для этого Route и будет использовать его для этого Route и его children. Если для этого маршрута также задана функция loadChildren, возвращающая NgModuleRef, этот инжектор будет использоваться как родительский для модуля с отложенной загрузкой.
Описание
Объект конфигурации, определяющий один маршрут. Набор маршрутов объединяется в массив Routes, чтобы определить конфигурацию Router. Маршрутизатор пытается сопоставить сегменты заданного URL с каждым маршрутом, используя параметры конфигурации, определённые в этом объекте.
Поддерживаются статические маршруты, маршруты с параметрами, перенаправления и маршруты с подстановочными шаблонами, а также пользовательские данные маршрутов и методы разрешения данных.
Подробные сведения об использовании см. в руководстве по маршрутизации.
Примечания по использованию
Простая конфигурация
В следующем маршруте указано, что при переходе, например, по адресу /team/11/user/bob маршрутизатор создаёт компонент 'Team', содержащий дочерний компонент 'User'.
[{
path: 'team/:id',
component: Team,
children: [{
path: 'user/:name',
component: User
}]
}] Несколько outlet
Следующий маршрут создаёт соседние компоненты с несколькими outlet. При переходе по адресу /team/11(aux:chat/jim) маршрутизатор создаёт компонент 'Team' рядом с компонентом 'Chat'. Компонент 'Chat' помещается в outlet 'aux'.
[{
path: 'team/:id',
component: Team
}, {
path: 'chat/:user',
component: Chat
outlet: 'aux'
}] Подстановочные шаблоны
В следующем маршруте используется нотация подстановочного шаблона, чтобы задать компонент, который создаётся независимо от того, куда вы переходите.
[{
path: '**',
component: WildcardComponent
}] Перенаправления
В следующем маршруте свойство redirectTo используется, чтобы игнорировать сегмент заданного URL при поиске дочернего пути.
При переходе по адресу '/team/11/legacy/user/jim' маршрутизатор заменяет сегмент URL '/team/11/legacy/user/jim' на '/team/11/user/jim', а затем создаёт компонент Team, содержащий дочерний компонент User.
[{
path: 'team/:id',
component: Team,
children: [{
path: 'legacy/user/:name',
redirectTo: 'user/:name'
}, {
path: 'user/:name',
component: User
}]
}]
Путь перенаправления может быть относительным, как в этом примере, или абсолютным. Если изменить значение redirectTo в примере на абсолютный сегмент URL '/user/:name', результирующий URL также будет абсолютным: '/user/jim'.
Пустой путь
Конфигурации маршрутов с пустым путём можно использовать для создания компонентов, которые не «потребляют» сегменты URL.
В следующей конфигурации при переходе по адресу /team/11 маршрутизатор создаёт компонент 'AllUsers'.
[{
path: 'team/:id',
component: Team,
children: [{
path: '',
component: AllUsers
}, {
path: 'user/:name',
component: User
}]
}]
У маршрутов с пустым путём могут быть дочерние маршруты. В следующем примере при переходе по адресу /team/11/user/jim маршрутизатор создаёт компонент-обёртку, содержащий компонент пользователя.
Обратите внимание, что маршрут с пустым путём наследует параметры и данные родительского маршрута.
[{
path: 'team/:id',
component: Team,
children: [{
path: '',
component: WrapperCmp,
children: [{
path: 'user/:name',
component: User
}]
}]
}] Стратегия сопоставления
По умолчанию используется стратегия сопоставления пути 'prefix': маршрутизатор проверяет элементы URL слева направо, чтобы определить, соответствует ли URL указанному пути. Например, '/team/11/user' соответствует 'team/:id'.
[{
path: '',
pathMatch: 'prefix', //default
redirectTo: 'main'
}, {
path: 'main',
component: Main
}]
Можно указать стратегию сопоставления пути 'full', чтобы путь охватывал весь неиспользованный URL. Это важно при перенаправлении маршрутов с пустым путём. В противном случае, поскольку пустой путь является префиксом любого URL, маршрутизатор применит перенаправление даже при переходе к целевому адресу, создав бесконечный цикл.
В следующем примере стратегия pathMatch со значением 'full' гарантирует, что маршрутизатор применит перенаправление только при переходе по адресу '/'.
[{
path: '',
pathMatch: 'full',
redirectTo: 'main'
}, {
path: 'main',
component: Main
}] Маршруты без компонентов
Можно совместно использовать параметры между соседними компонентами. Например, предположим, что два соседних компонента должны отображаться рядом и обоим требуется параметр ID. Это можно реализовать с помощью маршрута, в котором на верхнем уровне не указан компонент.
В следующем примере 'MainChild' и 'AuxChild' — соседние компоненты. При переходе по адресу 'parent/10/(a//aux:b)' маршрут создаёт рядом компоненты main child и aux child. Для этого в компоненте приложения должны быть определены основной и дополнительный outlet.
[{
path: 'parent/:id',
children: [
{ path: 'a', component: MainChild },
{ path: 'b', component: AuxChild, outlet: 'aux' }
]
}]
Маршрутизатор объединяет параметры, данные и результаты разрешения данных родительского маршрута без компонента с параметрами, данными и результатами разрешения данных дочерних маршрутов.
Это особенно полезно, если дочерние компоненты определены с пустой строкой пути, как в следующем примере. При такой конфигурации переход по адресу '/parent/10' создаёт компоненты main child и aux.
[{
path: 'parent/:id',
children: [
{ path: '', component: MainChild },
{ path: '', component: AuxChild, outlet: 'aux' }
]
}] Отложенная загрузка
Отложенная загрузка ускоряет загрузку приложения, разбивая его на несколько пакетов и загружая их по мере необходимости. Чтобы использовать отложенную загрузку, укажите свойство loadChildren в объекте Route вместо свойства children.
Для следующего примера маршрута маршрутизатор будет загружать связанный модуль по мере необходимости с помощью встроенной в браузер системы импорта.
[{
path: 'lazy',
loadChildren: () => import('./lazy-route/lazy.module').then(mod => mod.LazyModule),
}];
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/Route