Spec-Zone.ru › Angular

Маршрут

Объект конфигурации, определяющий один маршрут. Набор маршрутов объединяется в массив 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 | undefined

URL или функция, возвращающая 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
@deprecated

Вместо этого используйте canMatch

Массив 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API