angular4 如何在全局设置路由跳转动画的方法

 更新时间:2017年08月30日 09:57:39   作者:陈俊翰  
本篇文章主要介绍了angular4 如何在全局设置路由跳转动画的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

最近用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。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • AngularJS实现表格的增删改查(仅限前端)

    AngularJS实现表格的增删改查(仅限前端)

    这篇文章主要介绍了AngularJS实现表格的增删改查,仅限前端,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • angular ng-click防止重复提交实例

    angular ng-click防止重复提交实例

    本篇文章主要介绍了angular ng-click防止重复提交实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Angular自定义指令Tooltip的方法实例

    Angular自定义指令Tooltip的方法实例

    现实世界千变万化,区区几种内置指令不可能满足所有的需求,下面这篇文章主要给大家介绍了关于Angular自定义指令Tooltip的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • angular中子控制器向父控制器传值的实例

    angular中子控制器向父控制器传值的实例

    今天小编就为大家分享一篇angular中子控制器向父控制器传值的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Angular8 实现table表格表头固定效果

    Angular8 实现table表格表头固定效果

    这篇文章主要介绍了Angular8 实现table表格表头固定效果,表头固定,内部实现滚动条效果,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • AngularJS深入探讨scope,继承结构,事件系统和生命周期

    AngularJS深入探讨scope,继承结构,事件系统和生命周期

    这篇文章主要介绍了AngularJS的scope,继承结构,事件系统和生命周期,较为详细的分析了scope的作用域、层次结构、继承及生命周期相关概念与使用技巧,需要的朋友可以参考下
    2016-11-11
  • 详解Angular的8个主要构造块

    详解Angular的8个主要构造块

    Angular 主要分为八大构造块(也就是八个核心概念):模块、组件、模板、元数据、数据绑定、指令、服务、依赖注入。有兴趣的可以了解一下
    2017-06-06
  • AngularJS实现元素显示和隐藏的几个案例

    AngularJS实现元素显示和隐藏的几个案例

    这篇文章主要介绍了AngularJS实现元素显示和隐藏的几个案例,需要的朋友可以参考下
    2015-12-12
  • angular.js指令中的controller、compile与link函数的不同之处

    angular.js指令中的controller、compile与link函数的不同之处

    最近一位大神问了我angular.js指令中的controller、compile与link函数的不同,想了想居然回答不出来,所以必须要深入的探究下,下面这篇文章主要介绍了关于angular.js指令中的controller、compile与link函数的不同之处,需要的朋友可以参考下。
    2017-05-05
  • AngularJS基础 ng-list 指令详解及示例代码

    AngularJS基础 ng-list 指令详解及示例代码

    本文主要介绍AngularJS ng-list 指令,这里帮大家整理了ng-list指令的基本资料,并附有示例代码,有需要的小伙伴可以参考下
    2016-08-08

最新评论