详解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获取select-option-text_value的方法
Dec 26 Javascript
浅谈被jQuery抛弃的函数及替代函数
May 03 Javascript
JavaScript基于ajax编辑信息用法实例
Jul 15 Javascript
Javascript中的Prototype到底是什么
Feb 16 Javascript
PassWord输入框代码分享
Jun 07 Javascript
JavaScript手机振动API
Jun 11 Javascript
模拟javascript中的sort排序(简单实例)
Aug 17 Javascript
利用Node.js编写跨平台的spawn语句详解
Feb 12 Javascript
使用vue.js写一个tab选项卡效果
Mar 25 Javascript
简单实现js轮播图效果
Jul 14 Javascript
vue实现点击关注后及时更新列表功能
Jun 26 Javascript
Node.js API详解之 timer模块用法实例分析
May 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
apache rewrite_module模块使用教程
2008/01/10 PHP
使用php实现截取指定长度
2013/08/06 PHP
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
层序遍历在ExtJs的TreePanel中的应用
2009/10/16 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
js中escape对应的C#解码函数 UrlDecode
2012/12/16 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
2019/05/22 Javascript
vue实现计算器功能
2020/02/22 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
手写Vue源码之数据劫持示例详解
2021/01/04 Vue.js
[07:40]DOTA2每周TOP10 精彩击杀集锦vol.4
2014/06/25 DOTA
跟老齐学Python之总结参数的传递
2014/10/10 Python
python数据封装json格式数据
2018/03/04 Python
python删除本地夹里重复文件的方法
2020/11/19 Python
python解释器spython使用及原理解析
2019/08/24 Python
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
财务经理的岗位职责
2013/12/17 职场文书
简短大学毕业感言
2014/01/18 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
经济贸易专业自荐信
2014/06/11 职场文书
安全生产年活动总结
2014/08/29 职场文书
党委领导班子整改方案
2014/09/30 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
个人工作总结(管理人员)范文
2019/08/13 职场文书
简单谈谈Python面向对象的相关知识
2021/06/28 Python
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技