Animate 模块不会为您的 HTML 元素设置动画,但是当 Animate 注意到某些事件(例如隐藏或显示 HTML 元素)时,该元素会获得一些可用于制作动画的预定义样式(或类)。
将动画模块添加到您的项目中:
import {
trigger,
state,
style,
animate,
transition
} from '@angular/animations';
为你的组件添加动画属性:
animations: [
trigger('heroState', [
state('a', style({
backgroundColor: 'yellow',
opacity:0.5
})),
state('b', style({
backgroundColor: 'black',
opacity:1
})),
transition('a => b', animate('100ms ease-in')),
transition('b => a', animate('100ms ease-out'))
])
]
当 herostate 改变时会调用触发器。
最后,您的 HTML 代码将是:
<div *ngIf="htmlSegment == 'a"
[@heroState]="a">
{{someMessage}}
</div>
<div *ngIf="htmlSegment == 'b"
[@heroState]="b" >
{{someMessage}}
</div>
我无法创建此代码的 Angular2 在线示例,但我创建了一个 AngularJS 在线示例来感知动画中究竟发生了什么。(要更改动画,您可以将 'nga-slide-down' 类更改为 'nga- fade' 或你自己的类)
Check Online(AngularJS - check auto-run js at the right panel and click on change button)