详解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 相关文章推荐
一个可以随意添加多个序列的tag函数
Jul 21 Javascript
IE和firefox浏览器的event事件兼容性汇总
Dec 06 Javascript
jQuery prev ~ siblings选择器使用介绍
Aug 09 Javascript
setTimeout()与setInterval()方法区别介绍
Dec 24 Javascript
jQuery 动态云标签插件
Nov 11 Javascript
JavaScript获取Url里的参数
Dec 18 Javascript
JavaScript 学习笔记之基础中的基础
Jan 13 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
Dec 14 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
May 25 Javascript
fullPage.js和CSS3实现全屏滚动效果
May 05 Javascript
Javascript中的this,bind和that使用实例
Dec 05 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
Jan 07 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
js下函数般调用正则的方法附代码
2008/06/22 PHP
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
PHP数组相关函数汇总
2015/03/24 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
2012/07/31 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
超精准的javascript验证身份证号的具体实现方法
2015/11/18 Javascript
jQuery动态添加
2016/04/07 Javascript
微信小程序 页面跳转及数据传递详解
2017/03/14 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
jquery操作ul的一些操作笔记整理(干货)
2017/08/31 jQuery
使用axios实现上传图片进度条功能
2017/12/21 Javascript
angular json对象push到数组中的方法
2018/02/27 Javascript
Vue2.0 事件的广播与接收(观察者模式)
2018/03/14 Javascript
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
js实现开关灯效果
2020/03/30 Javascript
Element Breadcrumb 面包屑的使用方法
2020/07/26 Javascript
[05:02][DOTA2]DOTA进化论 第一期
2013/09/27 DOTA
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
2018/10/14 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
python调用摄像头拍摄数据集
2019/06/01 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
为世界各地的女性设计和生产时尚服装:ROMWE
2016/09/17 全球购物
以下为Windows NT 下的32 位C++程序,请计算sizeof 的值
2016/12/07 面试题
《雷雨》教学反思
2014/02/20 职场文书
绿色环保演讲稿
2014/05/10 职场文书
组织生活会表态发言材料
2014/10/17 职场文书
运动会表扬稿
2015/01/16 职场文书
公司出纳岗位职责
2015/03/31 职场文书
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电