Angular 6 routerLinkActive不起作用

时间:2018-06-29 19:56:40

标签: html css angular angular6 routerlinkactive

我正在使用Angular 6构建站点,现在已经在问题上停留了几天。我正在尝试根据活动页面更改导航栏上的文本颜色(列表项)。我已经看到了有关如何使用AngularJS和javascript执行此操作的示例。我在Angular 5+的https://angular.io/api/router/RouterLinkActive库中遇到了routerActiveLink库文档,这似乎是一个简单的解决方案,但对我来说不起作用。我已经尝试了许多在网上看到的不同示例,但都没有奏效。我想念什么吗?以下是一些代码段:

header.component.html  
    <div class="navbar-collapse collapse navbar-nav pull-right" id="navbar">
<ul class="navbar-nav" style="align-items: center;">
  <li class="main-links" [routerLinkActive]="['active']">
    <a class="al" [routerLink]="['home']" id="home-button" href="home">Home</a>
  </li>
  <li class="main-links">
    <a class="al" routerLink="/about" routerLinkActive="active" id="about-button" href="about">About</a>
  </li>
  <li class="main-links">
    <a class="al" id="blog-button" href="https://tspace.web.att.com/blogs/financelive/?lang=en_us" target="_blank">Blog</a>
  </li>
  <li class="main-links">
    <a class="al" routerLink="/albums" routerLinkActive="active" id="albums-button" href="albums">Platinum Albums</a>
  </li>
  <li class="main-links">
    <a class="al" routerLink="/programs" routerLinkActive="active" id="programs-button" href="programs">Development Programs</a>
  </li>
  <li class="main-links">
    <a class="al" routerLink="/contact" routerLinkActive="active" id="contact-button" href="contact">Contact Us</a>
  </li>
</ul>

这是我在header.component.less中激活的声明:

    .active {
color: #009fdb;
font-family: font-bold;

}

当我在括号内使用[routerLinkActive]时,该页面完全不会加载,并且当我在a标签中使用routerLink和routerLinkActive时,它根本不会注册。我缺少一些进口商品吗?我尝试从@ angular / core导入router,routerlinkactive和routerlink。

我故意在代码示例中留下了两种不同的使用routerLinkActive的样式。当我实际运行它时不是这样。

我安装了Angular 6,bootstrap 4.1.1,jquery 3和popperjs。

进一步检查后,我发现routerLinkActive在根应用程序模块内的元素上可以正常工作。我为页眉和页脚创建了一个名为UiModule的新模块,该功能在页眉内部不起作用。关于如何使routerLinkActive在此模块上工作的任何想法?

1 个答案:

答案 0 :(得分:3)

尝试将RouterModule导入到UiModule中,它将无法使用在app.module.ts文件中导入的那个

import { RouterModule } from '@angular/router';
// some other imports here

@NgModule({
  imports: [
    RouterModule
  ],
  exports: [
    // export UI components
  ],
  declarations: [
    // declare UI components
  ]
})

遇到此问题时,我正确导入了所有内容。我花了几天的时间才知道问题出在我的HTML结构上

<li class="nav-list">
  <a routerLinkActive="active" 
    [routerLinkActiveOptions]="{exact: true}"
    routerLink="/" 
    href="/">
    <i class="material-icons nav-link-icon">person</i>
    <span class="nav-link-text">Profile</span>
  </a>
</li>

那里的问题是我一直在观察.active类是否出现在li元素中,而它却一直出现在anchor元素中。只需确定这不是您的情况。