Spec-Zone.ru › Angular

Справочник по маршрутизатору

В следующих разделах рассмотрены некоторые основные понятия и термины, связанные с маршрутизатором.

События маршрутизатора

При каждой навигации Router передаёт события навигации через свойство Router.events. Эти события перечислены в следующей таблице.

Событие маршрутизатора Описание
NavigationStart Возникает при начале навигации.
RouteConfigLoadStart Возникает перед тем, как Router лениво загружает конфигурацию маршрута.
RouteConfigLoadEnd Возникает после ленивой загрузки маршрута.
RoutesRecognized Возникает, когда маршрутизатор анализирует URL и распознаёт маршруты.
GuardsCheckStart Возникает, когда маршрутизатор начинает этап проверок при маршрутизации.
ChildActivationStart Возникает, когда маршрутизатор начинает активировать дочерние маршруты.
ActivationStart Возникает, когда маршрутизатор начинает активировать маршрут.
GuardsCheckEnd Возникает, когда маршрутизатор успешно завершает этап проверок при маршрутизации.
ResolveStart Возникает, когда маршрутизатор начинает этап разрешения данных при маршрутизации.
ResolveEnd Возникает, когда маршрутизатор успешно завершает этап разрешения данных при маршрутизации.
ChildActivationEnd Возникает, когда маршрутизатор завершает активацию дочерних маршрутов.
ActivationEnd Возникает, когда маршрутизатор завершает активацию маршрута.
NavigationEnd Возникает после успешного завершения навигации.
NavigationCancel Возникает, когда навигация отменяется. Это может произойти, если защита маршрута возвращает false во время навигации или перенаправляет пользователя, возвращая UrlTree или RedirectCommand.
NavigationError Возникает, если навигация завершается сбоем из-за непредвиденной ошибки.
Scroll Представляет событие прокрутки.

Если включить функцию withDebugTracing, Angular будет выводить эти события в консоль.

Терминология маршрутизатора

Ниже приведены основные термины, связанные с Router, и их значения:

Компонент маршрутизатора Описание
Router Отображает компонент приложения для активного URL. Управляет навигацией от одного компонента к следующему.
provideRouter предоставляет необходимые провайдеры сервисов для навигации по представлениям приложения.
RouterModule Отдельный NgModule, предоставляющий необходимые провайдеры сервисов и директивы для навигации по представлениям приложения.
Routes Задаёт массив Routes, каждый элемент которого сопоставляет путь URL с компонентом.
Route Определяет, как маршрутизатор должен переходить к компоненту в зависимости от шаблона URL. Большинство маршрутов состоят из пути и типа компонента.
RouterOutlet Директива (<router-outlet>), которая указывает место отображения представления маршрутизатором.
RouterLink Директива для привязки маршрута к кликабельному элементу HTML. Щелчок по элементу с директивой routerLink, привязанной к строке или массиву параметров ссылки, запускает навигацию.
RouterLinkActive Директива для добавления и удаления классов элемента HTML, когда связанная директива routerLink, находящаяся на элементе или внутри него, становится активной или неактивной. Она также может задавать aria-current активной ссылки для повышения доступности.
ActivatedRoute Сервис, предоставляемый каждому компоненту маршрута и содержащий сведения о маршруте, такие как параметры маршрута, статические данные, данные разрешения, глобальные параметры запроса и глобальный фрагмент.
RouterState Текущее состояние маршрутизатора, включающее дерево активированных маршрутов и вспомогательные методы для обхода этого дерева.
Массив параметров ссылки Массив, который маршрутизатор интерпретирует как инструкцию маршрутизации. Его можно привязать к RouterLink или передать в качестве аргумента методу Router.navigate.
Компонент маршрутизации Компонент Angular с RouterOutlet, который отображает представления в соответствии с навигацией маршрутизатора.

<base href>

Для навигации маршрутизатор использует браузерный механизм history.pushState. pushState позволяет настраивать пути URL внутри приложения; например, localhost:4200/crisis-center. URL-адреса внутри приложения могут быть неотличимы от URL-адресов сервера.

Современные браузеры с поддержкой HTML5 первыми получили поддержку pushState, поэтому многие называют такие URL-адреса URL-адресами «в стиле HTML5».

ПОЛЕЗНО: По умолчанию маршрутизатор использует навигацию в стиле HTML5. В разделе Стратегия LocationStrategy и стили URL браузера вы узнаете, почему предпочтителен стиль HTML5, как настроить его поведение и при необходимости перейти к более старому стилю с хешем (#).

Чтобы маршрутизация pushState работала, необходимо добавить в index.html приложения элемент <base href>. Браузер использует значение <base href> как префикс относительных URL-адресов при обращении к файлам CSS, скриптам и изображениям.

Добавьте элемент <base> сразу после тега <head>. Если папка app является корнем приложения, как в данном приложении, задайте значение href в index.html, как показано ниже.

<base href="/" />

URL-адреса HTML5 и <base href>

В приведённых далее рекомендациях будут упоминаться разные части URL-адреса. На этой схеме показано, какие именно части имеются в виду:

foo://example.com:8042/over/there?name=ferret#nose
\_/   \______________/\_________/ \_________/ \__/
 |           |            |            |        |
scheme    authority      path        query   fragment

Хотя по умолчанию маршрутизатор использует стиль HTML5 pushState, эту стратегию необходимо настроить с помощью <base href>.

Предпочтительный способ настройки стратегии — добавить тег элемента <base href> в <head> index.html.

<base href="/" />

Без этого тега браузер может не загрузить ресурсы (изображения, CSS, скрипты) при переходе по глубокой ссылке в приложение.

Некоторые разработчики могут не иметь возможности добавить элемент <base>, например, если у них нет доступа к <head> или index.html.

Эти разработчики всё равно могут использовать URL-адреса HTML5, выполнив следующие два шага:

  1. Укажите для маршрутизатора подходящее значение APP_BASE_HREF.
  2. Используйте корневые URL-адреса (URL-адреса с authority) для всех веб-ресурсов: CSS, изображений, скриптов и HTML-файлов шаблонов.
    • Значение <base href> path должно заканчиваться символом «/», поскольку браузеры игнорируют символы в path, следующие за последним справа «/»

    • Если <base href> содержит часть query, query используется только в том случае, если path ссылки на странице пусто и не содержит query. Это означает, что query в <base href> включается только при использовании HashLocationStrategy.

    • Если ссылка на странице является корневым URL-адресом (содержит authority), <base href> не используется. Таким образом, APP_BASE_HREF с полномочиями сервера приведёт к тому, что все ссылки, созданные Angular, будут игнорировать значение <base href>.

    • Фрагмент в <base href> никогда не сохраняется

Более подробную информацию о том, как <base href> используется для построения целевых URI, см. в разделе RFC, посвящённом преобразованию ссылок.

Стратегия HashLocationStrategy

Используйте HashLocationStrategy, передав useHash: true в объекте в качестве второго аргумента метода RouterModule.forRoot() в AppModule.

providers: [provideRouter(appRoutes, withHashLocation())];

При использовании RouterModule.forRoot настройка задаётся с помощью useHash: true во втором аргументе: RouterModule.forRoot(routes, {useHash: true}).

Super-powered by Google ©2010–2025.
Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
https://angular.dev/guide/routing/router-reference

Spec-Zone.ru

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