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 相关文章推荐
IE 条件注释详解总结(附实例代码)
Aug 29 Javascript
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
May 17 Javascript
js实现鼠标悬浮给图片加边框的方法
Jan 30 Javascript
avalonjs实现仿微博的图片拖动特效
May 06 Javascript
学习JavaScript设计模式(继承)
Nov 26 Javascript
Bootstrap CDN和本地化环境搭建
Oct 26 Javascript
javascript ASCII和Hex互转的实现方法
Dec 27 Javascript
canvas学习之API整理笔记(二)
Dec 29 Javascript
详解JS中的立即执行函数
Feb 24 Javascript
vue组件如何被其他项目引用
Apr 13 Javascript
如何获取TypeScript的声明文件.d.ts
May 01 Javascript
浅谈手写node可读流之流动模式
Jun 01 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
一个MYSQL操作类
2006/11/16 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
JS小功能(button选择颜色)简单实例
2013/11/29 Javascript
js判断是否为ie的方法小结
2014/01/13 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
2016/05/25 Javascript
把普通对象转换成json格式的对象的简单实例
2016/07/04 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
js + css实现标签内容切换功能(实例讲解)
2017/10/09 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
2017/11/22 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:08:44]NB vs VP 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python批量下载图片的三种方法
2013/04/22 Python
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
浅谈python之新式类
2018/08/12 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
可口可乐唇膏:Lip Smackers
2019/08/27 全球购物
高中毕业自我鉴定范文
2013/10/02 职场文书
经管应届生求职信范文
2014/05/18 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
2014年档案管理员工作总结
2014/12/01 职场文书
辞职申请书范本
2019/05/20 职场文书
导游词之安徽醉翁亭
2020/01/10 职场文书
Ajax是什么?Ajax高级用法之Axios技术
2021/04/21 Javascript