## Angular 2 动画笔记
Angular 2 的动画定义在组件装饰器的`animations`属性中。
Angular 2自定义了一套动画描述语言(DSL),用于映射CSS3动画,过度,变换操作。在使用时则是调用一系列动画函数。
通过查看动画相关的api,可以发现一共有3个抽象类`AnimationMetadata`,`AnimationStateMetadata`和`AnimationWithStepsMetadata`,其中`AnimationWithStepsMetadata`扩展了`AnimationStateMetadata` 抽象类。
### 定义类和实现函数
```
trigger => AnimationEntryMetadata
state => AnimationStateDeclarationMetadata extends AnimationStateMetadata
transition => AnimationStateTransitionMetadata extends AnimationStateMetadata
keyframes => AnimationKeyframesSequenceMetadata extends AnimationMetadata
style => AnimationStyleMetadata extends AnimationMetadata
animate => AnimationAnimateMetadata extends AnimationMetadata
sequence => AnimationSequenceMetadata extends AnimationWithStepsMetadata
group => AnimationGroupMetadata extends AnimationWithStepsMetadata
```
### 使用方式
```
|- trigger[]
|- state
|- style
|- transition
|- style
|- animate
|- style
|- keyframes
|- keyframes[]
|- style
|- sequence # 可以嵌套
|- style
|- animate
|- sequence
|- group
|- group # 可以嵌套
|- style
|- animate
|- sequence
|- group
```
> 注:`keyframes`中能用于`animate`方法内
### 特殊状态
- \*
\*(通配符)状态匹配任何动画状态。
- void
有一种叫做void的特殊状态,它可以应用在任何动画中。它表示元素没有被附加到视图。这种情况可能是由于它尚未被添加进来或者已经被移除了。 void状态在定义“进场”和“离场”的动画时会非常有用。
使用void和*状态,可以定义元素进场与离场时的转场动画:
- 进场:void => *
- 离场:* => void
> 注: `void => *` 对应别名:`:enter`, `* => void` 对应别名:`:leave`
### 使用方式
- 在模块中
```typescript
@Component({
animations: [
trigger('motion_1', [
state('show', style({
// ...
})),
transition('void => *', ),
]),
trigger('motion_2', [
])
]
})
```
- 在视图中
```html
<div @motion></div>
<div [@motion]='state'></div>
```
- 说明
- angular 1.x
- ngModelController
- ngOptions
- ngModelOptions
- lifecycle
- directive
- angular 2
- @angular/forms
- 类
- AbstractControl
- AbstractControlDirective
- AbstractFormGroupDirective
- FormControl
- FormArray
- FormBuilder
- FormGroup
- NgControl
- 接口
- controlValueAccessor
- 指令
- DefaultValueAccessor
- Angular 2 生命周期
- OnInit
- DoCheck
- @angular/router
- 配置
- Routes
- 指令
- RouterOutlet
- RouterLink
- 接口
- ActivatedRoute
- UrlTree
- NavigationExtras
- ActivatedRouteSnapshot
- RouterStateSnapshot
- 类
- UrlSegment
- UrlSegmentGroup
- UrlSerializer
- DefaultUrlSerializer
- Router
- bug记得
- @angular/http
- 类
- Http
- Body
- Response
- ResponseOptions
- Header
- Request
- RequestOptions
- URLSearchParams
- @angular/core
- decorator
- Component-decorator
- animation
- DI
- linker
- TemplateRef
- ElementRef
- EmbeddedViewRef
- ViewRef
- ViewContainerRef
- Query
- ComponentFactory
- ComponentRef
- Renderer
- change_detection
- KeyValueDiffers
- IterableDiffers
- ChangeDetectorRef
- ChangeDetectionStrategy
- Zone
- ngZone
- @angular/common
- 指令
- NgTemplateOutlet
- QueryList
- bootstrap4
- card
- form
- 重点关注博客
- 学习过的文章
- 笔记
- Angular 2 双向绑定
- 将字符串解析成DOM
- rx相关
- operators
- combineLatest
- combineAll
- concat(All, Map, *MapTo)
- 背压(backpressure)
- js事件keycode对应表
- 装饰器
- 有用的代码摘录
- 日期操作
- 数量操作
- 字符操作
- rxjs问题
- 小示例
- h5面试准备
- react
- 开发遇到的问题