переключение загрузочного класса гиперссылок с помощью angular

#html #angular #class #hyperlink #bootstrap-4

#HTML #angular #класс #гиперссылка #bootstrap-4

Вопрос:

У меня есть несколько гиперссылок на странице

 <a href="#" class="list-group-item list-group-item-action active" routerLink='/route1' >First Link</a>
<a href="#" class="list-group-item list-group-item-action" routerLink='/route2' >Second Link</a>
<a href="#" class="list-group-item list-group-item-action" routerLink='/route3' >Third Link</a>
 

Первая ссылка выделяется, потому что имеет класс «active». при нажатии на каждую ссылку у меня есть некоторые действия, но первая ссылка все равно остается активной.
Теперь, как я могу переместить активный класс на соответствующую нажатую ссылку?

Ответ №1:

используйте директиву routeLinkActive следующим образом

 <a href="#" class="list-group-item list-group-item-action"  routerLinkActive="active" routerLink='/route1' (click)="setActiveItem('first')">First Link</a>
<a href="#" class="list-group-item list-group-item-action"  routerLinkActive="active" routerLink='/route2' (click)="setActiveItem('second')">Second Link</a>
<a href="#" class="list-group-item list-group-item-action"  routerLinkActive="active" routerLink='/route3' (click)="setActiveItem('third')">Third Link</a>
 

Ответ №2:

Используйте ngClass для условного переключения активного элемента:

https://angular.io/api/common/NgClass

Добавьте (click) действие к каждому a элементу, а внутри вызываемой функции установите активный элемент:

 <a href="#" class="list-group-item list-group-item-action" [ngClass]="{'active': activeItem === 'first'}" routerLink='/route1' (click)="setActiveItem('first')">First Link</a>
<a href="#" class="list-group-item list-group-item-action" [ngClass]="{'active': activeItem === 'second'}"routerLink='/route2' (click)="setActiveItem('second')">Second Link</a>
<a href="#" class="list-group-item list-group-item-action" [ngClass]="{'active': activeItem === 'third'}" routerLink='/route3' (click)="setActiveItem('third')">Third Link</a>
 

в ts-файле:

 activeItem: string;

setActiveItem(activeItem: string): void {
  this.activeItem = activeItem;
}
 

Комментарии:

1. можете ли вы написать простой пример? Я понимаю, что ngClass может добавлять class, но как я могу это сделать, нажав link, и как добавить class точно к той же ссылке, которая была нажата?

2. спасибо за помощь, но routerLinkActive отлично решил мою проблему