angular的动画ngAnimate模块

ngAnimate模块和ngRoute一样,不属于核心模块,都是需要script引入,然后在模块内依赖注入

那ngAnimate做了什么?

ngAnimate 模型可以添加或移除 class 。

ngAnimate 模型并不能使 HTML 元素产生动画,但是 ngAnimate 会监测事件,类似隐藏显示 HTML 元素 ,如果事件发生 ngAnimate 就会使用预定义的 class 来设置 HTML 元素的动画。

支持的指令:

指令支持动画
ngRepeatenter, leave and move
ngViewenter and leave
ngIncludeenter and leave
ngSwitchenter and leave
ngIfenter and leave
ngClassadd and remove
ngShow & ngHideadd and remove (the ng-hide class value)
formadd and remove (dirty, pristine, valid, invalid & all other validations)
ngModeladd and remove (dirty, pristine, valid, invalid & all other validations)

那么,怎么使用呢? 本文拿ng-repeat这个指令来做个介绍,其他的一些指令使用方式几乎相同,可类推。

ng-repeat 主要是对一个list的展示,这些元素是是被创建出来加入到DOM结构中去的,那么,它的动画过程为:

创建元素 -> .ng-enter -> .ng-enter-active -> 完成,呈默认状态
默认状态 -> .ng-leave -> .ng-leave-active -> 销毁元素
ng-show 和 ng-hide 指令用于添加或移除 ng-hide class 的值。
其他指令会在进入 DOM 会添加 ng-enter 类,移除 DOM 会添加 ng-leave 属性。
当 HTML 元素位置改变时,ng-repeat 指令同样可以添加 ng-move 类 。
此外, 在动画完成后,HTML 元素的类集合将被移除。例如: 
ng-hide 指令会添加一下类:
ng-animate ng-hide-animate ng-hide-add (如果元素将被隐藏) ng-hide-remove (如果元素将显示) ng-hide-add-active (如果元素将隐藏) ng-hide-remove-active (如果元素将显示)

这样的效果是对所有元素同时应用,可能实际运用中需要有一个先后的渐变出现的效果,这时候可以设置ng-enter-stagger里面的transition-delay的样式时间。

具体情况还需要我们自己去实践。

参考:http://www.open-open.com/lib/view/open1437529447443.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Angular中,要注册一个全局模块,您需要在根模块(通常是 AppModule)中进行注册。以下是一些步骤来注册一个全局模块: 1. 创建一个名为`global.module.ts`的全局模块文件,并在其中定义您要注册的全局模块。 ```typescript import { NgModule, APP_INITIALIZER } from '@angular/core'; import { CommonModule } from '@angular/common'; @NgModule({ declarations: [ // 在这里声明全局组件、指令、管道等 ], imports: [ CommonModule ], exports: [ // 在这里导出全局组件、指令、管道等 ], providers: [ // 在这里提供全局服务等 { provide: APP_INITIALIZER, useFactory: globalModuleInitializer, multi: true } ] }) export class GlobalModule { } export function globalModuleInitializer() { return () => { // 在这里执行任何需要在应用程序启动时初始化的操作 // 例如:全局配置、设置等 // 可以返回 Promise 或 Observable,确保初始化完成后再继续应用程序的启动 return new Promise<void>((resolve) => { // 执行初始化操作 // ... resolve(); }); }; } ``` 2. 在根模块(AppModule)中导入并添加`GlobalModule`到`imports`数组中。 ```typescript import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; // 导入GlobalModule import { GlobalModule } from './global.module'; @NgModule({ declarations: [ // 在这里声明根组件等 ], imports: [ BrowserModule, GlobalModule // 将GlobalModule添加到imports数组中 ], providers: [], bootstrap: [AppComponent] }) export class AppModule { } ``` 现在,您的全局模块已经注册,并且其中的组件、指令、管道和服务可以在应用程序的任何地方使用。 请注意,`APP_INITIALIZER`提供者可以用来在应用程序启动时执行一些初始化操作。您可以根据需要在`globalModuleInitializer`函数中进行自定义操作。 希望这能帮到您!如果您还有其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值