Выделите серым цветом вкладку/пункт меню, если компонент имеет логическое значение «false»

#html #css #angular #typescript

Вопрос:

У меня есть домашняя страница с многочисленными пунктами меню/вкладок, которые просто перенаправляют пользователя при нажатии, но у них должен быть доступ к пункту меню, на который они нажимают. Если они этого не сделают, это просто невозможно исправить. Эта функция работает, но я хотел бы выделить пункт меню серым цветом, если у пользователя нет доступа. Пожалуйста, смотрите пример:

 <div class="sidenav"> 
   <a 
     [ngClass]="{'menuitem': true,'activemenu':currentPage=='reporting' }" 
     [class.disabled]="!home.reportAccess" 
     (click)="navigateToPage('reporting',home.reportAccess)"  
     role="text">
       <img src=".assetsimagesmonotone_arrow_play_right_next1.png">Reporting
   </a>
</div>
 

Это просто проверяет компонент reportAccess, и если значение равно false, не разрешайте пользователю нажимать/перенаправлять на эту страницу. Я бы хотел создать серый подъем на эту вкладку, чтобы пользователь визуально знал, что он не может получить доступ к этой странице. Я хотел бы добавить это в дополнение к уже существующей реализации. У кого-нибудь есть какие-нибудь предложения? Кстати, я новичок в интерфейсной веб-разработке. 🙂

Заранее спасибо!

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

1. вы отключили ссылку с помощью !home.reportAccess ?

Ответ №1:

вы можете использовать то же логическое значение, чтобы добавить класс CSS для изменения цвета.

 <div class="sidenav"> 
   <a 
     [ngClass]="{'menuitem': true,'activemenu':currentPage=='reporting', !home.reportAccess ? 'disabled-style' : '' }" 
     [class.disabled]="!home.reportAccess" 
     (click)="navigateToPage('reporting',home.reportAccess)"  
     role="text">
       <img src=".assetsimagesmonotone_arrow_play_right_next1.png">Reporting
   </a>
</div>
 

Ответ №2:

С помощью ответа Саниры вот что я придумал:

 <div class="sidenav"> 
   <a 
     [ngClass]="{'menuitem': true,'activemenu':currentPage=='reporting','gray-nav': home.reportAccess==false }" 
     [class.disabled]="!home.reportAccess" 
     (click)="navigateToPage('reporting',home.reportAccess)" role="text">
     <img src=".assetsimagesmonotone_arrow_play_right_next1.png">Reporting
  </a>
</div>
 

CSS:

 .gray-nav {
      background-color: gray;
      pointer-events:none;
}
 

Это работает так, как задумано. Спасибо за помощь!