详解angular路由高亮之RouterLinkActive


Posted in Javascript onApril 28, 2018

路由高亮是什么?有什么好处?

当你在做一个后台管理系统,左边是一排路由导航,点击可以进入不同的页面,那么这个路由所在dom元素会添加上样式表示当前是位置。

但是一刷新你会发现,这个样式没了...

怎么办?

采用路由高亮:当路由被激活时允许你添加一个class在你添加路由的dom元素上,只有url变化时才会移除此样式。

当前路由被激活或者当前路由处于激活状态表示页面的url中路由和当前dom标签里的路由想匹配。

// 用法概览
@Directive({
  selector: '[routerLinkActive]',
  exportAs: 'routerLinkActive'
})
class RouterLinkActive implements OnChanges, OnDestroy, AfterContentInit {
 constructor(router: Router, element: ElementRef, renderer: Renderer2, cdr: ChangeDetectorRef)
 links: QueryList<RouterLink>
 linksWithHrefs: QueryList<RouterLinkWithHref>
 get isActive: boolean
 routerLinkActiveOptions: {...}
 set routerLinkActive: string[] | string
 ngAfterContentInit(): void
 ngOnChanges(changes: SimpleChanges): void
 ngOnDestroy(): void
}

示例

.red{
  color: red;
}
<a routerLink="/user/login" routerLinkActive="red">login</a>

当url是user或者/user/login的时候,a标签将会被加上classred。当url变化为别的时,class将会被移除。

如何添加两个class?

<a routerLink="/user/login" routerLinkActive="class1 class2">login</a>

routerLinkActive的两种写法

<a routerLink="/user/login" routerLinkActive="class1 class2">login</a>
<a routerLink="/user/login" [routerLinkActive]="['class1', 'class2']">login</a>

也可以给routerLinkActive进行配置参数

传递exact: true表示路由完全匹配时才高亮,如

<a routerLink="/user/login" routerLinkActive="red" [routerLinkActiveOptions]="{exact: true}">login</a>

你还可以使用isActive检查当前是否路由处于激活状态

<a routerLink="/user/login" routerLinkActive #rla="routerLinkActive">
 login {{ rla.isActive ? '激活' : '未激活'}}
</a>

如果当前路由处于激活状态,则会显示:login 激活

非激活状态

login 未激活

上述的 rla 为routerLinkActive缩写,它可以随便定义。

重点来了: 你可以在使用routerLink元素的父元素上使用RouterLinkActive指令

是不是给每个路由都分别添加样式好费事?给它父元素添加上路由高亮指令即可解决问题!

<div routerLinkActive="red" [routerLinkActiveOptions]="{exact: true}">
 <a routerLink="/user/login">login</a>
 <a routerLink="/user/reset">reset</a>
</div>

只要给a标签的父元素div添加上routerLinkActive和routerLinkActiveOptions, 当路由是/user/login或/user/reset时其所在dom元素分别被添加上red样式。 这里需要注意的是要添加上routerLinkActiveOptions指定完全匹配,不然会出现url为user时两个路由均被匹配上添加了red样式。

更多API用法更新于 github

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS 动态获取节点代码innerHTML分析 [IE,FF]
Nov 30 Javascript
扩展JavaScript功能的正确方法(译文)
Apr 12 Javascript
javascript中的toFixed固定小数位数 简单实例分享
Jul 12 Javascript
禁止拷贝网页内容的js代码
Jan 22 Javascript
jQuery实现单击和鼠标感应事件
Feb 01 Javascript
jQuery简单几行代码实现tab切换
Mar 10 Javascript
Node.js实用代码段之获取Buffer对象字节长度
Mar 17 Javascript
javascript断点调试心得分享
Apr 23 Javascript
socket.io学习教程之基础介绍(一)
Apr 29 Javascript
尝试自己动手用react来写一个分页组件(小结)
Feb 09 Javascript
基于vue中解决v-for使用报红并出现警告的问题
Mar 03 Javascript
解决使用vue.js路由后失效的问题
Mar 17 Javascript
vue弹窗组件使用方法
Apr 28 #Javascript
学习Vue组件实例
Apr 28 #Javascript
vue弹窗消息组件的使用方法
Sep 24 #Javascript
layui实现动态和静态分页
Apr 28 #Javascript
js实现二级菜单点击显示当前内容效果
Apr 28 #Javascript
Vue实现点击时间获取时间段查询功能
Aug 21 #Javascript
vue组件实现弹出框点击显示隐藏效果
Oct 26 #Javascript
You might like
Memcache 在PHP中的使用技巧
2010/02/08 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
PHP完全二叉树定义与实现方法示例
2017/10/09 PHP
将HTML自动转为JS代码
2006/06/26 Javascript
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
2009/09/15 Javascript
javascript 动态生成私有变量访问器
2009/12/06 Javascript
jQuery中;function($,undefined) 前面的分号的用处
2014/12/17 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
2015/07/27 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
2016/12/08 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
2017/02/05 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
Seajs源码详解分析
2019/04/02 Javascript
[57:36]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第三场 2月1日
2021/03/11 DOTA
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
Python面向对象特殊成员
2017/04/24 Python
利用python求相邻数的方法示例
2017/08/18 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
Python创建简单的神经网络实例讲解
2021/01/04 Python
百思买美国官网:Best Buy
2016/07/28 全球购物
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
什么是属性访问器
2015/10/26 面试题
上课迟到检讨书100字
2014/01/11 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
实习协议书范本
2014/09/25 职场文书
故意伤害辩护词
2015/05/21 职场文书
招商银行工作证明
2015/06/17 职场文书
初婚初育证明范本
2015/06/18 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
中学校园广播稿
2015/08/18 职场文书