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实现的支持lrc歌词的播放器
May 17 Javascript
JQuery Dialog的内存泄露问题解决方法
Jun 18 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
Mar 26 Javascript
js跳转页面方法总结
Jan 29 Javascript
javaScript使用EL表达式的几种方式
May 27 Javascript
判断复选框是否被选中的两种方法
Jun 04 Javascript
限制上传文件大小和格式的jQuery插件实例
Jan 24 Javascript
详解使用angular的HttpClient搭配rxjs
Sep 01 Javascript
给vue项目添加ESLint的详细步骤
Sep 29 Javascript
vue实现tab切换外加样式切换方法
Mar 16 Javascript
一次微信小程序内地图的使用实战记录
Sep 09 Javascript
Websocket 向指定用户发消息的方法
Jan 09 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
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
摩卡咖啡
2021/03/03 咖啡文化
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
php单链表实现代码分享
2016/07/04 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
PHP对象相关知识总结
2017/04/09 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
javascript一些实用技巧小结
2011/03/18 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
select标签模拟/美化方法采用JS外挂式插件
2013/04/01 Javascript
JavaScript简介
2015/02/15 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
基于jQuery仿淘宝产品图片放大镜特效
2020/10/19 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
Node登录权限验证token验证实现的方法示例
2020/05/25 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
Python使用Phantomjs截屏网页的方法
2018/05/17 Python
python 项目目录结构设置
2020/02/14 Python
python 比较字典value的最大值的几种方法
2020/04/17 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
VC++笔试题
2014/10/13 面试题
毕业生就业自荐书
2013/12/15 职场文书
综合办公室主任职责
2013/12/16 职场文书
女娲补天教学反思
2014/02/05 职场文书
美术教师自我鉴定
2014/02/12 职场文书
2014年元旦感言
2014/03/06 职场文书
主题实践活动总结
2014/05/08 职场文书
小学校长竞聘演讲稿
2014/05/16 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
2014年初级职称工作总结
2014/12/08 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python