将 CSS 应用于活动路由器链接 [Angular 2]

Posted

技术标签:

【中文标题】将 CSS 应用于活动路由器链接 [Angular 2]【英文标题】:Apply CSS to active router link [Angular 2] 【发布时间】:2016-11-19 00:59:08 【问题描述】:

我想将特殊的 CSS 样式属性应用于活动路由器链接:

<a [routerLink]='link'>name</a>

这是我目前尝试过的(使用默认的 router-link-active 类):

.router-link-active 
	color: #000;
	font-weight: bold;

它不起作用,我真的不明白为什么。

【问题讨论】:

我不认为它实际上是重复的;另一个问题是关于 Angular 1,而这是 angular2,而 angular2 的路由器是从 angular1 中删除的几个版本。 【参考方案1】:

目前 Angular 2 有一个 built in attribute,你可以在任何与 [routerLink] 一起使用的链接上使用它,它是 routerLinkActive,所以你需要做的就是拥有:

<a [routerLink]='link' routerLinkActive="router-link-active">name</a>

然后它将识别哪个路由是当前活动的路由并应用你的 router-link-active 类。

注意:

对于那些在a 标签以外的标签上使用 routerLink 的人,(我个人在按钮上使用它)routerLinkActive 不起作用,但应该在路由器的下一个版本中起作用 - https://github.com/angular/angular/issues/9755

【讨论】:

这很好用,我怎样才能在我的组件打字稿类中获得一个布尔值,指示路由器链接是否处于活动状态? 那么......您是否只需要知道您的页面上是否有一个元素具有 router-link-active 类?还是您想找出当前处于活动状态的路线? 我想知道哪个路由当前处于活动状态,实际上我在 TabComponent 的模板中有一个路由链接,然后在父组件中使用 *ngFor 生成许多路由链接 在这种情况下,您需要考虑使用ActivatedRoute,它会返回您可能想要的所有内容以及有关已加载组件的更多信息。如果您最终在实施时遇到问题,请创建一个新问题 也适用于已发布的 2.0 版本。【参考方案2】:

新路由器有一个名为“routerLinkActive”的指令,这是您感兴趣的。

例如&lt;a [routerLink]="/user/bob" routerLinkActive="active-link"&gt;Bob&lt;/a&gt;

"当 url 为 '/user' 或 '/user/bob' 时,active-link 类将被添加到 a 标签中。如果 url 发生变化,则该类将被删除。"

【讨论】:

【参考方案3】:

什么都不知道,这就是我要给你指出的方向。

&lt;a [routerLink]='link' [ngClass]="'router-link-active': routerLink.something === something"&gt;name&lt;/a&gt;

如果 routerLink.something === something 或您想要的任何表达式的计算结果为 true,则将应用该类(和样式)。

【讨论】:

以上是关于将 CSS 应用于活动路由器链接 [Angular 2]的主要内容,如果未能解决你的问题,请参考以下文章

CSS:将 CSS 样式应用于除 Material Angular 之外的所有内容

滚动经过片段时,Angular 10会获得路由器活动片段吗?

Angular路由导航的7个步骤

Angular路由导航的7个步骤

Codeigniter--将“活动”css类添加到链接,如何?

路由组件的Angular 2“动画幻灯片”