Примените класс начальной загрузки ко всем дочерним якорям в угловом компоненте - PullRequest
0 голосов
/ 20 октября 2019

Мне не удалось выполнить поиск в Google ...

Мой угловой компонент содержит логическую переменную isAuthenticated, которая изменяется на true / false в зависимости от состояния входа (в файле машинописи).

<div id="sidebar-container" class="sidebar-expanded col-2 d-none d-md-block bg-light" >
        <a class="nav-link" routerLink="/" [ngClass]="isAuthenticated ? '' : 'disabled'">Overview</a>
        <a class="nav-link" routerLink="settings" [ngClass]="isAuthenticated ? '' : 'disabled'">Settings</a>
</div>

[ngClass]="isAuthenticated ? '' : 'disabled' повторяется для каждого тега привязки.

Что я могу сделать, чтобы написать оператор if только один раз ??

Ответы [ 3 ]

1 голос
/ 20 октября 2019

Вот способ применить принципы СУХОГО кодирования к вашим пунктам меню. В модели:

public get menuItems() {
  return [
    { path: '/', title: 'Overview' },
    { path: 'settings', title: 'Settings' }
  ];
}

В шаблоне:

<div id="sidebar-container">
  <a *ngFor="let item of menuItems"
     [routerLink]="[item.path]" 
     [ngClass]="['nav-link', { disabled: !isAuthenticated }]">
    {{item.title}}
  </a>
</div>
0 голосов
/ 20 октября 2019

Вы можете сделать это, выполнив некоторые хаки css.

просто установите условный уникальный класс css в родительском div.

<div id="sidebar-container"  class="sidebar-expanded col-2 d-none  .  
 d-md-block bg-light" [ngClass]="!isAuthenticated ? '' : 'disabled'" >

добавьте ниже css в файле .css:

.disabled a{
  pointer-events: none;
  color : grey;
  cursor: not-allowed;
}

Как видите, CSS применяется ко всем дочерним якорям disabled class.

Рабочий пример

0 голосов
/ 20 октября 2019

Вы можете написать свой код так -

<a class="nav-link" routerLink="/" [ngClass]="{'disabled': !isAuthenticated}">Overview</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...