详解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代码
Jan 12 Javascript
js带点自动图片轮播幻灯片特效代码分享
Sep 07 Javascript
使用 stylelint检查CSS_StyleLint
Apr 28 Javascript
jQuery实现三级菜单的代码
May 09 Javascript
jquery ajax局部加载方法详解(实现代码)
May 12 Javascript
微信公众平台开发教程(五)详解自定义菜单
Dec 02 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
Aug 04 Javascript
iview table高度动态设置方法
Mar 14 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
May 12 Javascript
浅谈ECMAScript 中的Array类型
Jun 10 Javascript
一些可能会用到的Node.js面试题
Jun 15 Javascript
JavaScript中的连续赋值问题实例分析
Jul 12 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
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
无需重新编译php加入ftp扩展的解决方法
2013/02/07 PHP
用mysql_fetch_array()获取当前行数据的方法详解
2013/06/05 PHP
php获取英文姓名首字母的方法
2015/07/13 PHP
PHP函数func_num_args用法实例分析
2015/12/07 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
如何让PHP编码更加好看利于阅读
2019/05/12 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
2019/10/17 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
js的onload事件及初始化按钮事件示例代码
2013/09/25 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
2014/05/28 Javascript
基于javascript制作经典传统的拼图游戏
2016/03/22 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
Vue.js原理分析之observer模块详解
2017/02/17 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
2017/12/27 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
Python实现的排列组合计算操作示例
2017/10/13 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
python3 sleep 延时秒 毫秒实例
2020/05/04 Python
Baby Tulai澳大利亚:美国婴儿背带品牌
2018/10/15 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
廉洁校园实施方案
2014/05/25 职场文书
广播体操口号
2014/06/18 职场文书
小学教师师德师风自我剖析材料
2014/09/29 职场文书
普通党员整改措施
2014/10/24 职场文书
大学生十八大感想
2015/08/11 职场文书
2016年国庆节宣传标语
2015/11/25 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
导游词之太湖
2019/10/08 职场文书
Django中的JWT身份验证的实现
2021/05/07 Python
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
Sql Server之数据类型详解
2022/02/28 SQL Server