Чтение состояния маршрута¶
30.09.2026
Angular Router позволяет читать данные, связанные с маршрутом, и строить компоненты, которые реагируют на контекст.
Сведения о текущем маршруте через ActivatedRoute¶
ActivatedRoute — сервис из @angular/router. В нём собраны все данные текущего маршрута.
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
ActivatedRoute отдаёт разные сведения о маршруте. Часто используют такие свойства:
| Свойство | Подробности |
|---|---|
url | Observable путей маршрута: массив строк, по одной на каждую часть пути. |
data | Observable с объектом data, заданным для маршрута. Сюда же попадают значения, которые разрешил охранник resolve. |
params | Observable обязательных и необязательных параметров именно этого маршрута. |
queryParams | Observable параметров запроса, доступных всем маршрутам. |
resources | Необязательная запись экземпляров Resource, объявленных на маршруте (когда включён withRouterResources). |
Полный список того, что можно прочитать у маршрута, — в документации API ActivatedRoute.
Снимки маршрута¶
Переходы между страницами — события во времени. Состояние маршрутизатора в конкретный момент даёт снимок маршрута.
В снимке — основные данные маршрута: параметры, данные и дочерние маршруты. Снимок статичен и не отражает последующие изменения.
Пример чтения снимка маршрута:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |
Полный список свойств — в документации API ActivatedRoute и документации API ActivatedRouteSnapshot.
Чтение параметров маршрута¶
Из маршрута читают два вида параметров: параметры маршрута и параметры запроса.
Параметры маршрута¶
Параметры маршрута передают данные в компонент через URL. Так показывают конкретное содержимое по идентификатору в адресе, например пользователя или товара.
Параметры маршрута задают, поставив перед именем двоеточие (:).
1 2 3 4 | |
Параметры читают подпиской на route.params.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
Параметры запроса¶
Параметры запроса передают необязательные данные через URL и не меняют структуру маршрута. Они сохраняются между переходами и подходят для фильтрации, сортировки, постраничного вывода и других элементов интерфейса, у которых есть состояние.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Параметры запроса читают через route.queryParams.
Ниже ProductList обновляет параметры запроса, от которых зависит показ списка товаров:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | |
В примере список товаров сортируют по имени или цене через элемент select. Обработчик изменения пишет новые параметры запроса в URL, подписка читает их и обновляет список.
Подробнее — в документации QueryParamsHandling.
Матричные параметры¶
Матричные параметры необязательны и принадлежат конкретному сегменту URL, а не всему маршруту. Параметры запроса стоят после ? и действуют на весь адрес. Матричные параметры записывают через точку с запятой (;) и ограничивают одним сегментом пути.
Матричные параметры передают вспомогательные данные в конкретный сегмент маршрута и не влияют ни на определение маршрута, ни на сопоставление. Как и параметры запроса, их не объявляют в конфигурации маршрутов.
1 2 3 4 5 6 | |
Через ActivatedRoute
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Матричные параметры также попадают во входы компонента, если включён withComponentInputBinding. Это вариант чтения помимо ActivatedRoute.
Текущий активный маршрут через RouterLinkActive¶
Директива RouterLinkActive динамически оформляет элементы навигации по текущему активному маршруту. Так в меню видно, какой пункт сейчас открыт.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
В примере Angular Router добавляет класс active-button нужной ссылке и выставляет ariaCurrentWhenActive в page, когда URL совпадает с соответствующим routerLink.
Несколько классов задают строкой через пробел или массивом:
1 2 3 4 5 | |
Значение routerLinkActive одновременно становится значением ariaCurrentWhenActive. Так активную кнопку узнают и пользователи, которые не различают смену оформления.
Другое значение для aria задают явно директивой ariaCurrentWhenActive.
Стратегия сопоставления маршрута¶
По умолчанию RouterLinkActive считает совпадением и предков маршрута.
1 2 | |
Когда пользователь открывает /user/jane/role/admin, класс active-link получают обе ссылки.
RouterLinkActive только при точном совпадении¶
Чтобы класс появлялся только при точном совпадении, директиве routerLinkActiveOptions передают объект с exact: true.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Если сопоставление нужно настроить точнее, exact: true раскрывается в полный набор параметров:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Подробнее — в документации isActiveMatchOptions.
RouterLinkActive на элементе-предке¶
Директиву RouterLinkActive вешают и на элемент-предок, чтобы оформить нужные элементы.
1 2 3 4 | |
Подробнее — в документации API RouterLinkActive.
Проверка, активен ли адрес¶
Функция isActive возвращает вычисляемый сигнал: активен ли заданный URL в маршрутизаторе. Сигнал обновляется сам, когда меняется состояние маршрутизатора.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
Источник: https://angular.dev/guide/routing/read-route-state