=====Создание ссылок=====
Для удобного перехода между различными частями приложения, как правило, применяется система навигации, состоящая из ссылок. К примеру, возьмем проект из прошлой темы и добавим в него навигацию. В этом проекте есть два компонента HomeComponent и AboutComponent, которые обрабатывают различные запросы и результат обработки которых вставляется в шаблон главного компонента - класса AppComponent.\\
\\
Поэтому определим в AppComponent набор ссылок для навигации:
import { Component} from '@angular/core';
@Component({
selector: 'my-app',
template: ``
})
export class AppComponent {}
Для определения адресов ссылок применяется директива **routerLink**.\\
\\
В прошлой теме в модуле AppModule было определено три маршрута:
const appRoutes: Routes =[
{ path: '', component: HomeComponent},
{ path: 'about', component: AboutComponent},
{ path: '**', component: NotFoundComponent }
];
В соответствии с первым маршрутом HomeComponent обрабатывает запросы url без сегментов, поэтому для создания ссылки на этот компонент указывается пустая строка: .\\
\\
AboutComponent обрабатывает запросы, которые содержат в адресе "about", поэтому ссылка имеет соответствующий адрес: . В данном случае стоит отметить слеш, с которого начинается адрес. Если мы определяем набор ссылок в главном компоненте (как здесь), то слеш в принципе можно не использовать. Если же ссылки определяются в дочерних компонентах, например, в AboutComponent, то без слеша мы можем получить некорректный путь. Слеш позволяет задать путь относительно корня приложения.\\
\\
{{ :angular:angular2:routing:scrin1.png |}}\\
====Стилизация активных ссылок====
Для стилизации активных ссылок применяется специальная директива **routerLinkActive**, которая указывает на класс css, применяемый к активной ссылке. Так, изменим класс компонента:
import { Component} from '@angular/core';
@Component({
selector: 'my-app',
styles:[`
.active {color:red;}
`],
template: ``
})
export class AppComponent { }
{{ :angular:angular2:routing:7.9.png |}}\\
\\
В то же время при стилизации следует учитывать следующий момент: если мы нажмем на ссылку "О сайте", то будут стилизованы обе ссылки:\\
\\
{{ :angular:angular2:routing:7.10.png |}}\\
\\
Все дело в том, что путь, представляющий первую ссылку (routerLink=""), совпадает с url второй ссылки (routerLink="/about"), так как первый путь можно свести к любому другому пути.\\
\\
В этом случае нам надо применить дополнительные настройки с помощью директивы routerLinkActiveOptions:\\
Главная
О сайте
Значение {exact:true} указывает на то, что для установки активной ссылки будет применяться полное соответствие:\\
\\
{{ :angular:angular2:routing:7.11.png |}}\\
\\
Но элементы навигации необязательно представляют голые ссылки. Нередко они заключаются в списки, в какие-то блоки. И, возможно, мы захотим стилизовать не просто активную ссылку, а весь элемент, в котором данная ссылка расположена. В этом случае можно применить директиву routerLinkActive к элементу-контейнеру ссылки:
import { Component} from '@angular/core';
@Component({
selector: 'my-app',
styles:[`
.nav{ clear: both;}
a {float: left;}
.active a { color: red;}
`],
template: ``
})
export class AppComponent { }