详解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 相关文章推荐
jQuery live
May 15 Javascript
javascript 支持链式调用的异步调用框架Async.Operation
Aug 04 Javascript
jQuery学习7 操作JavaScript对象和集合的函数
Feb 07 Javascript
jquery ajax方式直接提交整个表单核心代码
Aug 15 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
Jan 26 Javascript
JS基于面向对象实现的选项卡效果示例
Dec 20 Javascript
Angular设置别名alias的方法
Nov 08 Javascript
浅谈vue后台管理系统权限控制思考与实践
Dec 19 Javascript
基于vue.js组件实现分页效果
Dec 29 Javascript
Vue自定义全局Toast和Loading的实例详解
Apr 18 Javascript
Vue商品控件与购物车联动效果的实例代码
Jul 21 Javascript
详解vue-property-decorator使用手册
Jul 29 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
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
php中序列化与反序列化详解
2017/02/13 PHP
php+ajax实现异步上传文件或图片功能
2017/07/18 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
js change,propertychange,input事件小议
2011/12/20 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
2015/12/04 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
详解 vue better-scroll滚动插件排坑
2018/02/08 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
[02:09:59]火猫TV国士无双dota2 6.82版本详解(下)
2014/09/29 DOTA
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
python+flask实现API的方法
2018/11/21 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
2020/02/29 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
英国老牌潮鞋店:Offspring
2019/08/19 全球购物
介绍一下MYSQL常用的优化技巧
2012/10/25 面试题
优秀导游先进事迹材料
2014/01/25 职场文书
农村面貌改造提升实施方案
2014/03/18 职场文书
助理政工师申报材料
2014/06/03 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
企业财务总监岗位职责
2015/04/03 职场文书
合理化建议书范文
2015/09/14 职场文书
文艺有韵味的诗句(生命类、亲情类...)
2019/07/11 职场文书
有关保护环境的宣传标语100条
2019/08/07 职场文书
一篇文章带你了解Python和Java的正则表达式对比
2021/09/15 Python