详解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 相关文章推荐
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
Jul 31 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
Feb 25 Javascript
jQuery实现点击标题输入详细信息
Apr 16 Javascript
javaScript 页面自动加载事件详解
Feb 10 Javascript
Javascript基础教程之while语句
Jan 18 Javascript
Javascript简写条件语句(推荐)
Jun 12 Javascript
CSS3 3D 技术手把手教你玩转
Sep 02 Javascript
jquery做个日期选择适用于手机端示例
Jan 10 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
Mar 28 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
Dec 26 Javascript
对angularJs中controller控制器scope父子集作用域的实例讲解
Oct 08 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
Apr 04 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在XP下IIS和Apache2服务器上的安装
2006/09/05 PHP
php MsSql server时遇到的中文编码问题
2009/06/11 PHP
php在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
PHP gbk环境下json_dencode传送来的汉字
2012/11/13 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
2019/04/09 PHP
js综合应用实例简单的表格统计
2013/09/03 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
js实现图片轮播效果
2015/12/19 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
2018/06/06 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
微信小程序实现工作时间段选择
2019/02/15 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
python获取图片颜色信息的方法
2015/03/18 Python
python实现逻辑回归的方法示例
2017/05/02 Python
python实现kMeans算法
2017/12/21 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
2018/09/17 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
python pyinstaller 加载ui路径方法
2019/06/10 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
strstr()的简单实现
2013/09/26 面试题
课程设计心得体会
2013/12/28 职场文书
元旦晚会活动总结
2014/07/09 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
税务会计岗位职责
2015/04/02 职场文书
高中军训感想
2015/08/07 职场文书
小学校园广播稿
2015/08/18 职场文书