详解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 相关文章推荐
javascript中巧用“闭包”实现程序的暂停执行功能
Apr 04 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
May 22 Javascript
jQuery中:enabled选择器用法实例
Jan 04 Javascript
Actionscript与javascript交互实例程序(修改)
Sep 22 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
Dec 14 Javascript
详解用node搭建简单的静态资源管理器
Aug 09 Javascript
canvas基础绘制-绚丽倒计时的实例
Sep 17 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
Dec 26 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
Mar 05 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
Oct 19 Javascript
原理深度解析Vue的响应式更新比React快
Apr 04 Javascript
JavaScript实现网页tab栏效果制作
Nov 20 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
通达OA公共代码 php常用检测函数
2011/12/14 PHP
javascript操作文本框readOnly
2007/05/15 Javascript
JavaScript中的Location地址对象
2008/01/16 Javascript
JavaScript 在各个浏览器中执行的耐性
2009/04/06 Javascript
W3C Group的JavaScript1.8 新特性介绍
2009/05/19 Javascript
读jQuery之二(两种扩展)
2011/06/11 Javascript
jQuery.extend 函数详解
2012/02/03 Javascript
jquery入门—访问DOM对象方法
2013/01/07 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
php+js实现倒计时功能
2014/06/02 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
javascript实现倒计时并弹窗提示特效
2015/06/05 Javascript
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
vue侧边栏动态生成下级菜单的方法
2018/09/07 Javascript
JavaScript实现简易聊天对话框(加滚动条)
2020/02/10 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
python 查找文件夹下所有文件 实现代码
2009/07/01 Python
Python多线程编程(二):启动线程的两种方法
2015/04/05 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
Python 忽略warning的输出方法
2018/10/18 Python
python3.7 sys模块的具体使用
2019/07/22 Python
python 采用paramiko 远程执行命令及报错解决
2019/10/21 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
女装和独特珠宝:Sundance Catalog
2018/09/19 全球购物
介绍一下SQL Server的全文索引
2013/08/15 面试题
会计试用期自我评价
2015/03/10 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
JavaScript 数组去重详解
2021/09/15 Javascript
redis 解决库存并发问题实现数量控制
2022/04/08 Redis
SpringBoot详解执行过程
2022/07/15 Java/Android