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 相关文章推荐
经常用的图片在容器中的水平垂直居中实例
Jun 10 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
Apr 14 Javascript
JavaScript作用域链使用介绍
Aug 29 Javascript
使用javascript控制cookie显示和隐藏背景图
Feb 12 Javascript
Bootstrap基础学习
Jun 16 Javascript
BOM之navigator对象和用户代理检测
Feb 10 Javascript
Bootstrap Table中的多选框删除功能
Jul 15 Javascript
js逆向解密之网络爬虫
May 30 Javascript
ElementUI Tag组件实现多标签生成的方法示例
Jul 08 Javascript
JS实现容器模块左右拖动效果
Jan 14 Javascript
JavaScrip如果基于url实现图片下载
Jul 03 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
Jul 15 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
删除无限级目录与文件代码共享
2006/07/12 PHP
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
jquery 鼠标滑动显示详情应用示例
2014/01/24 Javascript
轻松创建nodejs服务器(10):处理POST请求
2014/12/18 NodeJs
js H5 canvas投篮小游戏
2016/08/18 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
js实现省市级联效果分享
2017/08/10 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
2019/01/18 Javascript
koa+jwt实现token验证与刷新功能
2019/05/30 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
在python中实现对list求和及求积
2018/11/14 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
Skyscanner阿联酋:全球领先的旅游搜索平台
2017/11/25 全球购物
电影T恤、80年代T恤和80年代服装:TV Store Online
2020/01/05 全球购物
医学类个人求职信范文
2014/02/05 职场文书
社会学专业学生职业规划书
2014/02/07 职场文书
庆祝国庆节标语
2014/10/09 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
优秀学生干部事迹材料
2014/12/24 职场文书
荆州古城导游词
2015/02/06 职场文书
2015年度团总支工作总结
2015/04/23 职场文书
2015年环保局工作总结
2015/05/22 职场文书
英语投诉信范文
2015/07/03 职场文书
新闻稿格式范文
2015/07/18 职场文书
HTML5 语义化标签(移动端必备)
2021/08/23 HTML / CSS
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技
bose降噪耳机音能消除人声吗
2022/04/19 数码科技
Mysql表数据比较大情况下修改添加字段的方法实例
2022/06/28 MySQL