#javascript #angular #typescript #bootstrap-4 #angular10
#javascript #angular #typescript #bootstrap-4 #angular10
Вопрос:
У меня есть панель навигации, по которой я хочу перемещаться только по кнопкам «Далее» и «Назад», нажатие непосредственно на вкладки должно быть ограничено. Ниже приведен мой код, который я пробовал, но они работают не так, как ожидалось,
<nav class="navbar navbar-expand-lg">
<div class="navbar-collapse justify-content-center" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link mr-5" [ngClass]="href == '/expert-welcome/expert-profile'? '': 'disabled'" [routerLink]="['/expert-welcome/expert-profile']" [routerLinkActive]="['is-active']">
<b class="circularBold">Profile Details</b>
</a>
</li>
<li class="nav-item">
<a class="nav-link mr-5" [routerLink]="['/expert-welcome/expert-education']" [routerLinkActive]="['is-active']">
<b class="circularBold">Education amp; Experience</b>
</a>
</li>
<li class="nav-item">
<a class="nav-link mr-5">
<b class="circularBold">Services Offerings</b>
</a>
</li>
<li class="nav-item">
<a class="nav-link mr-5">
<b class="circularBold">Availability amp; Fees</b>
</a>
</li>
<li class="nav-item">
<a class="nav-link">
<b class="circularBold">Listing Details</b>
</a>
</li>
</ul>
</div>
</nav>
CSS
.disabled{
pointer-events: none;
}
При таком подходе он работает частично, когда я перемещаюсь по кнопкам назад и далее, маршрут загружается, но значение не исправляется, мне придется перезагрузить страницу, чтобы новое значение было исправлено.
В подходе 2 я удалил routerLink и routerLinkActive, но я хочу показать другой css для активной вкладки, как показано ниже.
Приветствуется лучшее решение или предложения.
Заранее спасибо.
Комментарии:
1. Пожалуйста, создайте stackblitz для того же, чтобы мы могли разветвляться и вносить необходимые изменения.
2. Если вы используете маршруты в своей панели навигации, поиск охраняется. Затем вы можете определить с помощью сервиса, разрешен ли пользователю доступ к определенной странице, это также защитит от того, если кто-то будет перемещаться, вводя ограниченный URL. Официальный документ можно найти здесь angular.io/guide/router#preventing-unauthorized-access
Ответ №1:
<a routerLink="/your/path"><span (click)="preventRloute($event)">Test link</span></a>
и написать функцию
function preventRloute($event: MouseEvent) {
if (condition) {
$event.stopPropagation();
// your code...
return;
}
// navigates
}