详解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语法着色引擎(demo及打包文件下载)
Jun 13 Javascript
用Javascript数组处理多个字符串的连接问题
Aug 20 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
Feb 01 Javascript
火狐textarea输入法的bug的触发及解决
Jul 24 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
Mar 05 Javascript
jquery实现弹出层效果实例
May 19 Javascript
javascript html5摇一摇功能的实现
Apr 19 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
Sep 17 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
Sep 28 Javascript
vue axios同步请求解决方案
Sep 29 Javascript
微信小程序之swiper滑动面板用法示例
Dec 04 Javascript
详解vue 组件
Jun 11 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 递归效率分析
2009/11/24 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
2019/10/16 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
javascript中关于执行环境的杂谈
2011/08/14 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
再JavaScript的jQuery库中编写动画效果的指南
2015/08/13 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
SVG描边动画
2017/02/23 Javascript
用angular实现多选按钮的全选与反选实例代码
2017/05/23 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
2017/05/31 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
2017/06/20 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
Vue基本指令实例图文讲解
2021/02/25 Vue.js
Python实现的数据结构与算法之快速排序详解
2015/04/22 Python
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
django 信号调度机制详解
2019/07/19 Python
Python 正则表达式爬虫使用案例解析
2019/09/23 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
纯css3实现图片翻牌特效
2015/03/10 HTML / CSS
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
司法助理专业自荐书
2014/06/13 职场文书
2014教师年度工作总结
2014/11/10 职场文书
浅谈Mysql多表连接查询的执行细节
2021/04/24 MySQL
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis
canvas实现贪食蛇的实践
2022/02/15 Javascript