Переход к маршрутам¶
30.09.2026
Директива RouterLink — декларативный способ навигации в Angular. Через неё обычные якорные элементы (<a>) встраиваются в систему маршрутизации.
Как использовать RouterLink¶
Вместо обычного элемента <a> с атрибутом href на ссылку вешают директиву RouterLink с нужным путём, и переход идёт через маршрутизацию Angular.
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Абсолютные и относительные ссылки¶
Относительные URL в маршрутизации Angular задают путь от текущего положения маршрута. Абсолютные URL содержат полный путь вместе с протоколом (например, http://) и корневым доменом (например, google.com).
1 2 3 4 5 | |
В первом примере у страницы essentials явно указаны протокол (https://) и корневой домен (angular.dev). Во втором переход на /essentials рассчитан на то, что пользователь уже находится на нужном корневом домене.
Относительные URL проще сопровождать: им не нужно знать своё абсолютное место в иерархии маршрутов.
Как устроены относительные URL¶
Относительные URL в маршрутизации Angular задают двумя синтаксисами: строкой и массивом.
1 2 3 | |
Строка — самый частый способ задать относительный URL.
Динамические параметры в относительном URL задают синтаксисом массива:
1 | |
Косая черта (/) в начале относительного пути привязывает его к корню домена. Без неё путь считается от текущего URL.
Если пользователь находится на example.com/settings, относительные пути для разных случаев выглядят так:
1 2 3 4 5 6 7 | |
Программный переход к маршрутам¶
RouterLink закрывает декларативную навигацию в шаблонах. Программная навигация нужна, когда переход зависит от логики, действия пользователя или состояния приложения. Внедрив Router, из кода TypeScript переходят на маршруты, передают параметры и управляют поведением навигации.
router.navigate()¶
Метод router.navigate() выполняет программный переход между маршрутами по массиву сегментов URL.
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 | |
router.navigate() покрывает и простые, и составные переходы: в вызов передают параметры маршрута, параметры запроса и настройки поведения навигации.
Динамический путь от положения компонента в дереве маршрутов собирают параметром relativeTo.
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 | |
При подъёме на несколько уровней все сегменты .. стоят в первом элементе массива команд. Маршрутизатор разбирает .. только из первой строки команды, а следующие элементы массива считает буквальными сегментами пути.
1 2 3 | |
Вместе с relativeTo первую команду не начинают с /. Начальный / делает переход абсолютным, и relativeTo не учитывается.
1 2 3 | |
1 2 3 4 | |
router.navigateByUrl()¶
Метод router.navigateByUrl() выполняет программный переход по строке пути, а не по массиву сегментов. Он удобен, когда есть полный путь и нужен абсолютный переход: внешние адреса и глубокие ссылки.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Чтобы заменить текущий URL в истории, в navigateByUrl передают объект конфигурации с параметром replaceUrl.
1 2 3 4 | |
Другой адрес в адресной строке¶
Параметр browserUrl метода navigateByUrl показывает в адресной строке браузера другой URL, не тот, по которому сопоставляется маршрут.
Так пользователя отправляют на другой маршрут, например на страницу ошибки, а в строке остаётся адрес, который он открывал изначально.
1 | |
Angular переходит на маршрут /not-found и отрисовывает его, а в адресной строке браузера остаётся /products/missing-item.
browserUrl меняет только то, что видно в адресной строке браузера.
Адрес в браузере через RouterLink¶
У директивы RouterLink тоже есть вход browserUrl. Он задаёт URL в адресной строке браузера при щелчке по ссылке отдельно от маршрута, на который переходит Angular.
1 2 | |
Для более динамичных случаев привязывают UrlTree:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
Что дальше¶
Как читать состояние маршрута, чтобы компоненты реагировали на контекст.
Источник: https://angular.dev/guide/routing/navigate-to-routes