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 相关文章推荐
ExtJS PropertyGrid中使用Combobox选择值问题
Jun 13 Javascript
提高javascript效率 一次判断,而不要次次判断
Mar 30 Javascript
使表格的标题列可左右拉伸jquery插件封装
Nov 24 Javascript
javascript实现框架高度随内容改变的方法
Jul 23 Javascript
javascript实现一个网页加载进度loading
Jan 04 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
Jan 11 Javascript
jQuery事件与动画基础详解
Feb 23 Javascript
移动端效果之IndexList详解
Oct 20 Javascript
详解Vue中localstorage和sessionstorage的使用
Dec 22 Javascript
JavaScript对象原型链原理解析
Jan 22 Javascript
前端如何实现动画过渡效果
Feb 05 Javascript
JS setTimeout与setInterval的区别
Apr 20 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
Thinkphp开发--集成极光推送
2017/09/15 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
jquery 循环显示div的示例代码
2013/10/18 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
2015/02/20 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
SWFObject基本用法实例分析
2015/07/20 Javascript
JavaScript学习笔记整理之引用类型
2016/01/22 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
Highcharts 多个Y轴动态刷新数据的实现代码
2016/05/28 Javascript
简单几步实现返回顶部效果
2016/12/05 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
2017/05/05 Javascript
javascript高级模块化require.js的具体使用方法
2017/10/31 Javascript
JavaScript中var、let、const区别浅析
2018/06/24 Javascript
[原创]微信小程序获取网络类型的方法示例
2019/03/01 Javascript
小程序中英文混合排序问题解决
2019/08/02 Javascript
Nuxt.js 静态资源和打包的操作
2020/11/06 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
python psutil模块使用方法解析
2019/08/01 Python
python实现五子棋程序
2020/04/24 Python
如何理解Python中包的引入
2020/05/29 Python
HTML5 File API改善网页上传功能
2009/08/19 HTML / CSS
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
程序员跳槽必看面试题总结
2013/06/28 面试题
买房子个人收入证明
2014/01/16 职场文书
幼儿园庆六一游园活动方案
2014/01/29 职场文书
八年级语文教学反思
2014/02/11 职场文书
报关专员求职信范文
2014/02/22 职场文书
商务英语广告词大全
2014/03/18 职场文书
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书
python获取淘宝服务器时间的代码示例
2021/04/22 Python
SpringBoot快速入门详解
2021/07/21 Java/Android
MySQL事务的隔离级别详情
2022/07/15 MySQL