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 相关文章推荐
JavaScript 应用类库代码
Jun 02 Javascript
JavaScript在IE和FF下的兼容性问题
May 19 Javascript
JQuery选择器、过滤器大整理
May 26 Javascript
jQuery向父辈遍历的简单方法
Sep 18 Javascript
js实现增加数字显示的环形进度条效果
Feb 05 Javascript
js实现数组和对象的深浅拷贝
Sep 30 Javascript
template.js前端模板引擎使用详解
Oct 10 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
Mar 05 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
Jul 31 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
Nov 01 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
Apr 15 Javascript
React Native登录之指纹登录篇的示例代码
Nov 03 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
php+dbfile开发小型留言本
2006/10/09 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
Jquery插件写法笔记整理
2012/09/06 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
JS实现定时页面弹出类似QQ新闻的提示框
2013/11/07 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
javascript作用域问题实例分析
2015/07/13 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
Vuejs 组件——props数据传递的实例代码
2017/03/07 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
python实现挑选出来100以内的质数
2015/03/24 Python
Python根据区号生成手机号码的方法
2015/07/08 Python
Python制作简单的网页爬虫
2015/11/22 Python
Python 高级专用类方法的实例详解
2017/09/11 Python
python利用有道翻译实现&quot;语言翻译器&quot;的功能实例
2017/11/14 Python
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
2018/11/21 Python
对python自动生成接口测试的示例讲解
2018/11/30 Python
python实现月食效果实例代码
2019/06/18 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
Python虚拟环境venv用法详解
2020/05/25 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
python右对齐的实例方法
2020/07/05 Python
python 安装移动复制第三方库操作
2020/07/13 Python
解决PDF 转图片时丢文字的一种可能方式
2021/03/04 Python
大家检讨书5000字
2014/02/03 职场文书
揠苗助长教学反思
2014/02/04 职场文书
致裁判员加油稿
2014/02/08 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
初中语文教学随笔
2015/08/15 职场文书
python - asyncio异步编程
2021/04/06 Python