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 相关文章推荐
求数组最大最小值方法适用于任何数组
Aug 16 Javascript
用JS做的简单的可折叠的两级树形菜单
Sep 21 Javascript
javascript 通用loading动画效果实例代码
Jan 14 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
Apr 15 Javascript
JavaScript事件处理的方式(三种)
Apr 26 Javascript
AngularJS实现分页显示数据库信息
Jul 01 Javascript
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
Aug 03 Javascript
JavaScript函数参数的传递方式详解
Mar 06 Javascript
Vue单文件组件的如何使用方式介绍
Jul 28 Javascript
原生javascript实现文件异步上传的实例讲解
Oct 26 Javascript
Es6 Generator函数详细解析
Feb 24 Javascript
JS中promise化微信小程序api
Apr 12 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二分法在IP地址查询中的应用
2008/08/12 PHP
PHP删除数组中特定元素的两种方法
2013/07/02 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
Yii框架操作cookie与session的方法实例详解
2019/09/04 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
Jquery知识点二 jquery下对数组的操作
2011/01/15 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
jQuery中width()方法用法实例
2014/12/24 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
如何让你的JS代码更好看易读
2017/12/01 Javascript
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
JS中的一些常用的函数式编程术语
2019/06/15 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
Python 数据结构之队列的实现
2017/01/22 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2017/10/01 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
2019/04/11 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
python 写一个水果忍者游戏
2021/01/13 Python
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
eBay澳大利亚站:eBay.com.au
2018/02/02 全球购物
澳大利亚在线划船、露营和钓鱼商店:BCF Australia
2020/03/22 全球购物
CSMA/CD介质访问控制协议
2015/11/17 面试题
服装设计专业毕业生推荐信
2013/11/09 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
教学评估实施方案
2014/03/16 职场文书
高中生班主任评语
2014/04/25 职场文书
党的群众路线教育实践活动个人整改落实情况汇报
2014/10/28 职场文书
高考学习决心书
2015/02/04 职场文书
英语教师个人工作总结
2015/02/09 职场文书
工程催款通知书
2015/04/17 职场文书
2017元旦晚会开幕词
2016/03/03 职场文书