Создание ссылок¶
Для удобного перехода между различными частями приложения, как правило, применяется система навигации, состоящая из ссылок. К примеру, возьмем проект из прошлой темы и добавим в него навигацию. В этом проекте есть два компонента HomeComponent
и AboutComponent
, которые обрабатывают различные запросы и результат обработки которых вставляется в шаблон главного компонента — класса AppComponent
.
Поэтому определим в AppComponent
набор ссылок для навигации:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Для определения адресов ссылок применяется директива routerLink
.
В прошлой теме в модуле AppModule
было определено три маршрута:
1 2 3 4 5 |
|
В соответствии с первым маршрутом HomeComponent
обрабатывает запросы url без сегментов, поэтому для создания ссылки на этот компонент указывается пустая строка: <a routerLink="">
.
AboutComponent
обрабатывает запросы, которые содержат в адресе about
, поэтому ссылка имеет соответствующий адрес: <a routerLink="/about">
. В данном случае стоит отметить слеш, с которого начинается адрес. Если мы определяем набор ссылок в главном компоненте (как здесь), то слеш в принципе можно не использовать. Если же ссылки определяются в дочерних компонентах, например, в AboutComponent
, то без слеша мы можем получить некорректный путь. Слеш позволяет задать путь относительно корня приложения.
Стилизация активных ссылок¶
Для стилизации активных ссылок применяется специальная директива routerLinkActive
, которая указывает на класс css, применяемый к активной ссылке. Так, изменим класс компонента:
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 |
|
В то же время при стилизации следует учитывать следующий момент: если мы нажмем на ссылку "О сайте", то будут стилизованы обе ссылки:
Все дело в том, что путь, представляющий первую ссылку routerLink=""
, совпадает с url второй ссылки routerLink="/about"
, так как первый путь можно свести к любому другому пути.
В этом случае нам надо применить дополнительные настройки с помощью директивы routerLinkActiveOptions
:
1 2 3 4 5 6 7 8 9 10 11 |
|
Значение {exact:true}
указывает на то, что для установки активной ссылки будет применяться полное соответствие:
Но элементы навигации необязательно представляют голые ссылки. Нередко они заключаются в списки, в какие-то блоки. И, возможно, мы захотим стилизовать не просто активную ссылку, а весь элемент, в котором данная ссылка расположена. В этом случае можно применить директиву routerLinkActive
к элементу-контейнеру ссылки:
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 37 |
|