Добавление состояния преобразования и событий преобразования с украшениями в Angular

В данный момент я использую свойство метаданных host для добавления @transform, (@transform.start) а также (@transform.end) к хосту компонента.

Я хочу добавить эти события с помощью @HostBinding а также @HostListener украшения.

У кого-нибудь есть идеи, как это сделать?

Я попробовал следующее:

@Component({
  selector: 'sidenav',
  template: '<ng-content></ng-content>',
  animations: [
    trigger('transform', [
      state('open, open-instant', style({
        transform: 'translate3d(0, 0, 0)',
        visibility: 'visible',
      })),
      state('void', style({
        visibility: 'hidden',
      })),
      transition('void => open-instant', animate('0ms')),
      transition('void <=> open, open-instant => void',
        animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))
    ])
  ],
  host: {
    // '[@transform]': '_animationState',
    // '(@transform.start)': '_onAnimationStart($event)',
    // '(@transform.done)': '_onAnimationEnd($event)',
  },
  changeDetection: ChangeDetectionStrategy.OnPush,
  encapsulation: ViewEncapsulation.None,
})
export class SidenavComponent {
  @HostBinding('@transform') private transformState() {
    return this._animationState;
  }
  @HostListener('@transform.start', ['$event']) onTransformStart(event: AnimationEvent) {
    this._onAnimationStart(event);
  }
  @HostListener('@transform.end', ['$event']) onTransformEnd(event: AnimationEvent) {
    this._onAnimationEnd(event);
  }
}

0 ответов

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