javascript - Angular 动画 :leave not triggered

标签 javascript css angular

我有一个带有动画的工具提示组件,其中 :enter 动画按预期工作,但 :leave 动画从未触发。

这是 stackblitz 的链接: https://stackblitz.com/edit/building-tooltip-eoby9e?file=src/app/tooltip/tooltip.component.ts

  animations: [
    trigger('tooltip', [
      transition(':enter', [
        style({ opacity: 0 }),
        animate(300, style({ opacity: 1 })),
      ]),
      transition(':leave', [
        animate(300, style({ opacity: 0 })),
      ]),
    ]),
  ],

另一个使用 @HostBinding 的例子:

@Component({
  selector: 'app-dialog',
  template: '<ng-container cdkPortalOutlet></ng-container>',
  changeDetection: ChangeDetectionStrategy.OnPush,
  animations: [
    trigger('dialog', [
      transition(':enter', [
        style({
          opacity: 0,
          transform: 'translateY(-100%)'
        }),
        animate('400ms ease-out',
          style({
            opacity: 1,
            transform: 'translateY(0)'
          }))
      ]),
      transition(':leave', [
        animate('400ms ease-out',
          style({
            opacity: 0,
            transform: 'translateY(-100%)'
          }))
      ])
    ])
  ]
})
export class DialogComponent extends BasePortalOutlet implements OnDestroy, OnInit {

  @ViewChild(CdkPortalOutlet) portalOutlet: CdkPortalOutlet;
  @HostBinding('@dialog') dialog = true;

最佳答案

这是一个棘手的案例。出现/消失的组件是 AwesomeTooltipComponent 而在您的示例动画附加到它的 child ,因此 parent 立即消失。我通过在 HostBinding 而非其子 div 的帮助下将动画应用于 AwesomeTooltipComponent 来解决此问题。 在这里查看 https://stackblitz.com/edit/building-tooltip-h4pxnf?file=src%2Fapp%2Ftooltip%2Ftooltip.component.ts

关于javascript - Angular 动画 :leave not triggered,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55324562/

相关文章:

javascript - 在 Node.js 中设置 HTTP 超时

javascript - ParseFloat 混淆

javascript - jQuery div 在触发图像上移动时闪烁

Angular 2 window.postmessage

angular - Angular 为 4 的标题管

javascript - Puppeteer:如何下载整个网页供离线使用

javascript - 如何在鼠标滚轮上设置剪贴蒙版动画

css - 响应式 CSS 中的无限最大宽度

html - CSS 文字断字 带溢出

angularjs - Angular 1.x $q 到 Angular 2.0 beta