多个状态之间的动画

此模板中的 <div> 增长到 50px 然后 100px,然后单击按钮时缩小回 20px

每个 state 都具有 @Component 元数据中描述的相关样式。

任何 state 处于活动状态的逻辑都可以在组件逻辑中进行管理。在这种情况下,组件变量 size 保持字符串值 smallmediumlarge

<div> 元素通过 @Component 元数据中指定的 trigger 响应该值:[@size]="size"

@Component({
  template: '<div [@size]="size">Some Text</div><button (click)="toggleSize()">TOGGLE</button>',
  animations: [
    trigger('size', [
      state('small', style({
        height: '20px'
      })),
      state('medium', style({
        height: '50px'
      })),
      state('large', style({
        height: '100px'
      })),
      transition('small => medium', animate('100ms')),
      transition('medium => large', animate('200ms')),
      transition('large => small', animate('300ms'))
    ])
  ]
})
export class TestComponent {

    size: string;

    constructor(){
        this.size = 'small';
    }
    toggleSize(){
        switch(this.size) {
            case 'small':
                this.size = 'medium';
                break;
            case 'medium':
                this.size = 'large';
                break;
            case 'large':
                this.size = 'small';
        }
    }
}