Как использовать "routerLinkActive" с параметрами запроса в Angular 6? - PullRequest
0 голосов
/ 27 августа 2018

У меня проблема в Angular: у меня три ссылки, одна из них имеет параметры запроса (из-за использования распознавателя). Если я нажму первую и третью ссылку, будет установлено значение routerLinkActive. Если я нажму вторую ссылку, то также будет установлена ​​routerLinkActive. Но если я изменю параметр запроса внутри компонента, routerLinkActive будет сброшено.

Итак, мне нужно игнорировать параметры запроса. Но как это работает? Кто-нибудь может мне помочь?

Вот мой простой код:

<div class="col-12">
    <ul class="nav nav-pills nav-justified">
        <li class="nav-item">
            <a 
              class="nav-link" 
              routerLink="/einstellungen/allgemein"                             
              routerLinkActive="active">
              Allgemein
            </a>
        </li>
        <li class="nav-item">
            <a 
              class="nav-link" 
              [routerLink]="['/einstellungen/kalender']" 
              [queryParams]="{branch: myBranches[0].id}" 
              routerLinkActive="active"
              [routerLinkActiveOptions]="{exact: false}">
              Kalender verwalten
           </a>
        </li>
        <li class="nav-item">
            <a 
              class="nav-link" 
              *ngIf="user.is_admin" 
              routerLink="/einstellungen/filialen" 
              routerLinkActive="active">
              Filialen verwalten
            </a>
        </li>
    </ul>
</div>

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Использование скрытого тега привязки и переменной шаблона html:

<a [routerLink]="/einstellungen/kalender" routerLinkActive="" #rla="routerLinkActive" hidden></a>
<a 
   class="nav-link" 
   [routerLink]="['/einstellungen/kalender']" 
   [queryParams]="{branch: myBranches[0].id}" 
   [class.active]="rla.isActive">
   Kalender verwalten
 </a>
0 голосов
/ 27 августа 2018

RouteLinkActive будет работать только с точными параметрами запроса. Вы можете попробовать передать {точное: ложное} в качестве routerLinkActiveOptions. Если это не сработает

Вы можете вызывать функцию внутри атрибутов [class.active].

<a class="nav-link" [routerLink]="['/einstellungen/kalender']" [queryParams]="{branch: myBranches[0].id}" [class.active]="isLinkActive('/my-link')">Kalender verwalten</a>

isLinkActive(url): boolean {
   const queryParamsIndex = this.router.url.indexOf('?');
   const baseUrl = queryParamsIndex === -1 ? this.router.url : 
   this.router.url.slice(0, queryParamsIndex);
   return baseUrl === url;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...