多個狀態之間的動畫

此模板中的 <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';
        }
    }
}