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 相关文章推荐
对于Form表单reset方法的新认识
Mar 05 Javascript
通过JS动态创建一个html DOM元素并显示
Oct 15 Javascript
jquery处理页面弹出层查询数据等待操作实例
Mar 25 Javascript
js跨域请求的5中解决方式
Jul 02 Javascript
js采用concat和sort将N个数组拼接起来的方法
Jan 21 Javascript
node-http-proxy修改响应结果实例代码
Jun 06 Javascript
深入理解Angular2 模板语法
Aug 07 Javascript
javascript入门之string对象【新手必看】
Nov 22 Javascript
js自制图片放大镜功能
Jan 24 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
Jul 11 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
Jul 25 jQuery
详解简单易懂的 ES6 Iterators 指南和示例
Sep 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
php中print(),print_r(),echo()的区别详解
2014/12/01 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
toString()一个会自动调用的方法
2010/02/08 Javascript
javascript自动恢复文本框点击清除后的默认文本
2016/01/12 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
JS实现的简易拖放效果示例
2016/12/29 Javascript
ajax实现动态下拉框示例
2017/01/10 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
vue.js指令v-model使用方法
2017/03/20 Javascript
xmlplus组件设计系列之按钮(2)
2017/04/26 Javascript
JavaScript闭包的简单应用
2017/09/01 Javascript
探索webpack模块及webpack3新特性
2017/09/18 Javascript
微信公众号平台接口开发 获取微信服务器IP地址方法解析
2019/08/14 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
python+pyqt5实现KFC点餐收银系统
2019/01/24 Python
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
python中str内置函数用法总结
2020/12/27 Python
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
Shell编程面试题
2016/05/29 面试题
EJB的角色和三个对象
2015/12/31 面试题
中医临床专业自我鉴定范文
2014/01/15 职场文书
商场中秋节活动方案
2014/02/07 职场文书
学校法制宣传日活动总结
2014/11/01 职场文书
公司文体活动总结
2015/05/07 职场文书
网吧管理制度范本
2015/08/05 职场文书
大学生学习十八届五中全会精神心得体会
2016/01/05 职场文书
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python