Как добавить класс CSS в активную внутристраничную ссылку (ссылка на хэштег) - Angular

У меня есть Angular, одностраничный сайт со следующим макетом

<body>
  <!-- Header -->
  <div class="header">
    <a [href]="{{ '#' + page1_Id }}">Page1</a>
    <a [href]="{{ '#' + page2_Id }}">Page2</a>
    <a [href]="{{ '#' + page3_Id }}">Page3</a>
  </div>

  <!-- Page1 -->
  <div [id]="page1_Id">
    I'm Page 1
  </div>
  <!-- Page2 -->
  <div [id]="page2_Id">
    I'm Page 2
  </div>
  <!-- Page3 -->
  <div [id]="page3_Id">
    I'm Page 3
  </div> 
</body>

(где pageN_Id является компонентом переменных)

Когда я нажимаю на ссылку ссылки заголовка N, окно переходит к странице N (используя навигацию по страницам, <a href="#someId">)

Теперь я хотел бы добавить "активный" css-класс к элементу a-link, когда ссылка была нажата.

Я знаю директивы routerLink а также routerLinkActive, но как использовать их со ссылкой внутри страницы (а не как простая ссылка между страницами)

2 ответа

Решение

Создайте переменную, которая будет указывать на идентификатор страницы ссылки href при нажатии.

пример:

 <a id="{{page1_Id}}" class="nav-link" [ngClass]="{ 'active': pageid== page1_Id  }" (click)="clicked(page1_Id )"></a>

Теперь в вашем компонентном файле.ts:

clicked(object) {
    this.pageid= object;
}

Вы можете использовать boostrap, чтобы сделать кодирование намного проще. Вот одна из функций начальной загрузки, которую вы ищете

Другие вопросы по тегам