Условно примените либо href, либо routerLink без * ngIf. - PullRequest
0 голосов
/ 15 марта 2019

У меня есть следующий код в шаблоне моего приложения Angular, который не работает должным образом:

<ng-container *ngFor="let item of items"">
   <a class="link"
      [attr.href]="item.url"
      [routerLink]="item.routerLink"
      rel="noopener noreferrer"
      tabindex="-1"
   >
     {{item.label}}
   </a>
<ng-container>
...

Я пытаюсь здесь перебрать массив элементов и отобразить списокссылки.Проблема в том, что элемент может иметь свойство url или routerLink.В зависимости от того, какое свойство имеет элемент, мне нужно либо применить атрибут href, либо routerLink.

. Есть ли способ сделать это без использования * ngIf, который вызывает дублирование кода?

Ответы [ 2 ]

3 голосов
/ 15 марта 2019

Я предлагаю вам перенести стратегию на component.ts

<a (click)="navigateToLink(item)">

и

navigateToLink( item ){
   if( item.routerLink ){
      this.router.navigate([item.routerLink]);
   }else if( item.url ){
      this.windows.open(item.url);
   }
}
0 голосов
/ 15 марта 2019

Попробуйте следующее

 <ng-container>
       <a class="link"
          [attr.href]="item.url ? item.url : ''"
          [routerLink]="item.routerLink ? item.routerLink: ''"
          rel="noopener noreferrer"
          tabindex="-1"
       >
         {{item.label}}
       </a>
    <ng-container>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...