显示div * ng如果路由器处于活动状态

时间:2019-07-17 19:36:22

标签: css angular bootstrap-4

只要我们在该活动页面中,我就会尝试在导航栏中的每个链接下显示一个div。我正在使用* ngFor

遍历每个链接

我需要的是这样的

enter image description here

但是我得到的是: enter image description here

这是我的代码:

component.html

<li class="nav-item mx-1" *ngFor="let link of links">
  <a class="nav-link" routerLinkActive="active" [routerLink]="link.url" [routerLinkActiveOptions]="{ exact: true }">
  {{link.nombre}}
  </a>
  <div *ngIf="getRouteActive()" class="bg-primary" style="height: 4px;"></div>
</li>

component.ts

getRouteActive() {
  return this.router.url === '/item1';
}

2 个答案:

答案 0 :(得分:1)

您可以将url作为参数传递给函数。

getRouteActive(url) {
      // I assume your url has a forward slash already
      return this.router.url === url;
    }

然后在您的template

<li class="nav-item mx-1" *ngFor="let link of links">
      <a class="nav-link" routerLinkActive="active" [routerLink]="link.url" [routerLinkActiveOptions]="{ exact: true }">
      {{link.nombre}}
      </a>
      <div *ngIf="getRouteActive(link.url)" class="bg-primary" style="height: 4px;"></div>
</li>

那应该给您想要的结果。

答案 1 :(得分:0)

或者,使用CSS:

.nav-item {
    div {
       display: none;
    }

   .active + div{
       display: block;
   }
}