详解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函数排序的实例代码
Jul 01 Javascript
提高jQuery性能的十个诀窍
Nov 14 Javascript
jQuery实现ichat在线客服插件
Dec 29 Javascript
jquery实现鼠标滑过小图时显示大图的方法
Jan 14 Javascript
Javascript 函数的四种调用模式
Nov 05 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
Nov 30 Javascript
Vue系列:通过vue-router如何传递参数示例
Jan 16 Javascript
layui文件上传实现代码
May 20 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
Aug 31 Javascript
Vue2.0 slot分发内容与props验证的方法
Dec 12 Javascript
vscode下的vue文件格式化问题
Nov 28 Javascript
js实现web调用摄像头 js截取视频画面
Apr 21 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
php二分查找二种实现示例
2014/03/12 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
jQuery版Tab标签切换
2011/03/16 Javascript
使用Jquery实现点击文字后变成文本框且可修改
2013/09/21 Javascript
jCallout 轻松实现气泡提示功能
2013/09/22 Javascript
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
2016/05/31 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
ES6学习教程之对象的扩展详解
2017/05/02 Javascript
使用重写url机制实现验证码换一张功能
2017/08/01 Javascript
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
vue项目中使用lib-flexible解决移动端适配的问题解决
2018/08/23 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
WebSocket的简单介绍及应用
2019/05/23 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
Tensorflow 查看变量的值方法
2018/06/14 Python
在python中创建指定大小的多维数组方式
2019/11/28 Python
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
用ldap作为django后端用户登录验证的实现
2020/12/07 Python
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
主办会计岗位职责
2014/03/13 职场文书
网吧最新创业计划书范文
2014/03/27 职场文书
我的中国梦演讲稿500字
2014/08/19 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
教师节领导致辞
2015/07/29 职场文书
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python