【问题标题】:Using class binding to activate routerLink in Angular使用类绑定在 Angular 中激活 routerLink
【发布时间】:2018-08-16 06:13:01
【问题描述】:

我正在尝试在 Angular 6 中向 routerLink 添加活动类。我的 sidnav 组件由所有 routerLinks 组成。单击 routerlink 后,特定链接应该处于活动状态并且应该出现特定组件。我尝试使用焦点 css,当我单击链接 2 次时它正在工作。可能是我收到错误,因为我在 bill-to 中使用 sidenav 选择器组件。

sidenav组件html代码:

 <li ><a  [ngClass]="{'red-input':clicked}" routerLink="/bill-to" routerLinkActive="red-input" (click)="Clicked()" >Bill To</a></li>
<li ><a   [ngClass]="{'red-input':clicked}" routerLink="/ship-to" routerLinkActive="red-input"  (click)="Clicked()"> Ship To</a></li>

ts 代码:

 clicked: boolean = false;

 Clicked() {
this.clicked = true;
 }

Bill-to 组件代码:

   <div class="container-fluid">
<div class="row">
  <div class="col-sm-3">
     <app-sidenav></app-sidenav>       
  </div>

  <div class="col-sm-8" style="margin-top:1%;">

  </div>
  </div>
  </div>

【问题讨论】:

  • 这就是 routerLinkActive 自己做的。删除 [ngClass] 和 (click) 处理程序:它们没用。
  • 我删除了,还是不行
  • 准确定义“不工作”。当然,如果您遇到错误,请发布它。为什么你在 bill-to 组件中有一个 sidenav?这没有道理。 sidenav 允许显示它,因此它已经显示在该组件之外。
  • 不工作:在链接上点击 2 次后工作。
  • 不工作:在链接上单击 2 次后工作。我在帐单组件中使用 sidenav,因为,我在这个项目中第二次使用 sidenav(父组件)。不考虑这个 sidenav在 routeroutlet 内部,因此我在 bill-to 组件中使用了 sidenav

标签: angular


【解决方案1】:

您应该使用[routerLinkActive]="'your-class-name'"。它将检测路由是否处于活动状态并自行应用类。

演示 https://stackblitz.com/edit/angular-gyhshq

【讨论】:

猜你喜欢
  • 2020-08-12
  • 2018-08-30
  • 2021-06-21
  • 1970-01-01
  • 2018-03-13
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多