angular4 如何在全局设置路由跳转动画的方法


Posted in Javascript onAugust 30, 2017

最近用angular4写项目需要为每次路由跳转增加动画,看了一下官方文档,虽然可以实现,但是要每个组件都引入一次animations,比较麻烦,找网上也查阅了很多资料,但是都没找到适用的方法,最后自己写了一种方法如下:

首先在app.module中导入BrowserAnimationsModule

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

@NgModule({
 imports: [
  BrowserAnimationsModule

在根目录src/app/下创建一个animations.ts。内容如下,这里我用到query和group是想两个页面来回切换有过度痕迹

import { AnimationEntryMetadata, state } from '@angular/core';
import { trigger, transition, animate, style, query, group } from '\@angular/animations';

export const routeAnimation: AnimationEntryMetadata =
 trigger('routeAnimation', [
  transition(':enter', [
   style({
    position: 'absolute'
   }),
   animate('0.5s ease-in-out')
  ]),
  transition('* => *', [
   query(':leave', style({ transform: 'translateX(0)', position: 'absolute'}), { optional: true }),
   query(':enter', style({ transform: 'translateX(100%)', position: 'absolute'}), { optional: true }),

   group([
    query(':leave', animate('.5s ease-in-out', style({transform: 'translateX(-100%)'})), { optional: true }),
    query(':enter', animate('.5s ease-in-out', style({transform: 'translateX(0)'})), { optional: true })
   ])
  ])
 ]);

接着在app.component中使用 NavigationEnd 设置每次路由跳转监听的参数变化并且引入animations模块

import { Router, NavigationEnd } from '@angular/router';
import { routeAnimation } from './animations';

@Component({
 selector: 'app-root',
 templateUrl: './app.component.html',
 styleUrls: ['./app.component.less'],
 animations: [routeAnimation]
})
// router跳转动画所需参数
 routerState: boolean = true;
 routerStateCode: string = 'active';

this.router.events.subscribe(event => {
   if (event instanceof NavigationEnd) {
    // 每次路由跳转改变状态
   this.routerState = !this.routerState;
   this.routerStateCode = this.routerState ? 'active' : 'inactive';
   }
  });

最后在app.component.html中声明路由动画就可以了

<div id="app" [@routeAnimation]="routerStateCode">
 <router-outlet></router-outlet>
</div>

现在全局路由跳转都有动画了,不用一个一个组件导入animations。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JCalendar 日历控件 v1.0 beta[兼容IE&amp;Firefox] 有文档和例子
May 30 Javascript
jquery 表单下所有元素的隐藏
Jul 25 Javascript
jquery+css3打造一款ajax分页插件(自写)
Jun 18 Javascript
基于js与flash实现的网站flv视频播放插件代码
Oct 14 Javascript
jQuery实现简单的间隔向上滚动效果
Mar 09 Javascript
详解js中构造流程图的核心技术JsPlumb
Dec 08 Javascript
很棒的Bootstrap选项卡切换效果
Jul 01 Javascript
让微信小程序支持ES6中Promise特性的方法详解
Jun 13 Javascript
Javascript防止图片拉伸的自适应处理方法
Dec 26 Javascript
基于three.js编写的一个项目类示例代码
Jan 05 Javascript
JS实现获取当前所在周的周六、周日示例分析
May 11 Javascript
了解JavaScript中的选择器
May 24 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
Aug 30 #Javascript
如何理解Vue的render函数的具体用法
Aug 30 #Javascript
微信小程序之发送短信倒计时功能
Aug 30 #Javascript
使用node.js对音视频文件加密的实例代码
Aug 30 #Javascript
hammer.js实现图片手势放大效果
Aug 29 #Javascript
js禁止表单重复提交
Aug 29 #Javascript
View.post() 不靠谱的地方你知道多少
Aug 29 #Javascript
You might like
php4与php5的区别小结(配置异同)
2011/12/20 PHP
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
本地计算机无法启动Apache故障处理
2014/08/08 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
优化WordPress的Google字体以加速国内服务器上的运行
2015/11/24 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
2016/07/07 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
2016/08/02 Javascript
js输入框使用正则表达式校验输入内容的实例
2017/02/12 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
js最全的数组的降维5种办法(小结)
2020/04/28 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
详解vue修改elementUI的分页组件视图没更新问题
2020/11/13 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
python中反射用法实例
2015/03/27 Python
Python批量修改文本文件内容的方法
2016/04/29 Python
Python 编码处理-str与Unicode的区别
2016/09/06 Python
解决nohup重定向python输出到文件不成功的问题
2018/05/11 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
python查看数据类型的方法
2019/10/12 Python
详解向scrapy中的spider传递参数的几种方法(2种)
2020/09/28 Python
希尔顿酒店官方网站:Hilton Hotels
2017/06/01 全球购物
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
小学毕业家长寄语
2014/01/19 职场文书
餐厅总厨求职信
2014/03/04 职场文书
中式结婚主持词
2014/03/14 职场文书
商场租赁意向书
2014/07/30 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
2014年志愿者工作总结
2014/11/20 职场文书
MySQL 5.7常见数据类型
2021/07/15 MySQL