代码之家  ›  专栏  ›  技术社区  ›  Nikita Marinosyan

有条件地应用不带*ngif的Href或RouterLink

  •  0
  • Nikita Marinosyan  · 技术社区  · 6 年前

    我的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 属性,或 路由链接 .

    有没有办法在不使用导致代码重复的*ngif的情况下做到这一点?

    2 回复  |  直到 6 年前
        1
  •  3
  •   Wandrille    6 年前

    我建议你把策略移到 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);
       }
    }
    
        2
  •  0
  •   Patricio Vargas    6 年前

    试试下面的

     <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>