javascript - 角度动画:未触发
问题描述
我有一个带有动画的工具提示组件,其中: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
在您的示例动画中附加到其子级,因此父级立即消失。我通过在它的子div而不是它的子divAwesomeTooltipComponent
的帮助下应用动画来解决这个问题。HostBinding
在这里查看https://stackblitz.com/edit/building-tooltip-h4pxnf?file=src%2Fapp%2Ftooltip%2Ftooltip.component.ts
推荐阅读
- laravel - 任何曾经在 laravel 中使用 Web Scraping 的人
- html - 如何使用 NodeJS 重定向到另一个页面
- compiler-errors - SwiftUI 初始化程序明显循环
- c - 如何在 C 中连接两个/三个指向 char 的指针并从中打开文件?
- javascript - HTML2Canvas 在 IOS 上给出空白图像
- delphi - 如何在 Firemonkey Delphi 的 TListView 中选择项目后移动到下一个选项卡
- node.js - 如何使用旋转文件流指定旋转文件位置
- java - java NIO SSO 处理器中的空指针
- typescript - 如何通过强制转换缩小打字稿类型,错了?
- git - Merge Request 是否仅指两个不同的 repo?