Angular2 анимация, показ метки за количество секунд X

Как я могу использовать анимацию angular2, чтобы показать метку за количество секунд X? В идеале я хотел бы показать saved! рядом с моим полем ввода появится надпись, которая будет появляться и оставаться в течение 2 секунд, а затем исчезать. Я могу легко заставить анимацию исчезать, но как я могу заставить ее исчезать?

Вот моя анимация:

animations: [
    trigger('hasSaved', [
        state('inactive', style({
            opacity: 0
        })),
        state('active', style({
            opacity: 1
        })),
        transition('inactive => active', [
            animate(500)
        ])
    ])
]

1 ответ

Решение

ДЕМО: https://plnkr.co/edit/yfSdg1qoYz3oHzLWfG1U?p=preview

Вы можете использовать *ngIf и setTimeout вместе, чтобы достичь этого.

я использую keyframes добавить анимацию.

animations: [
  trigger('hasSaved', [
    transition('void => *', [
      animate(1000, keyframes([
        style({opacity: 0, transform: 'translateX(-10%)',     offset: 0}),
        style({opacity: 1, transform: 'translateX(-40px)', offset: 0.3}),
        style({opacity: 1, transform: 'translateX(0)',  offset: 1.0})
      ]))
    ]),
    transition('* => void', [
      animate(1000, keyframes([
        style({opacity: 1, transform: 'translateX(0)',     offset: 0}),
        style({opacity: 1, transform: 'translateX(30px)', offset: 0.3}),
        style({opacity: 1, transform: 'translateX(20%)',  offset: 1.0})
      ]))
    ])
  ])
]

export class App {
  showSave:boolean=false;
  title = 'app works!';

  save(){
     this.showSave=!this.showSave;  
      setTimeout(()=>{
         this.showSave=!this.showSave;  
      },2000)

  }
}
Другие вопросы по тегам