【问题标题】:Angular 7 router transition conditionallyAngular 7 路由器有条件地过渡
【发布时间】:2021-05-20 22:24:11
【问题描述】:

我正在尝试有条件地在 div 上应用动画。我需要根据专用变量滑动顶部或底部。 这是我的动画功能:

export function slideTopOrBottom() {
    return trigger('slideTopOrBottom', [
        state('toTop', style({})),
        state('toBottom', style({})),
        transition('toTop => void', [
            query(':enter', [
                style({ transform: 'translateY(100%)' }),
                animate('1s ease-in-out', style({ transform: 'translateY(0%)' }))
            ], { optional: true }),
            query(':leave', [
                style({ transform: 'translateY(0%)' }),
                animate('1s ease-in-out', style({ transform: 'translateY(-100%)' }))
            ], { optional: true })
        ]),
        transition('toBottom => void', [
            query(':enter', [
                style({ transform: 'translateY(-100%)' }),
                animate('1s ease-in-out', style({ transform: 'translateY(0%)' }))
            ], { optional: true }),
            query(':leave', [
                style({ transform: 'translateY(0%)' }),
                animate('1s ease-in-out', style({ transform: 'translateY(100%)' }))
            ], { optional: true })
        ])
    ])
}

如果我在 html 标签中加入这个,它会正常工作:

<div [@slideTopOrBottom]="'toTop'"><div [@slideTopOrBottom]="'toBottom'">

我想根据条件将幻灯片应用到顶部或底部,单击顶部或底部按钮,所以我试图这样做:

<div [@slideTopOrBottom]="{value: slideDirection}">

在组件中:

slideDirection: string;

 ngOnInit() {
     this.slideDirection: 'toTop';
}

onBottomClick() {
    this.slideDirection: 'toBottom';
}

onTopClick() {
    this.slideDirection: 'toTop';
}

点击底部按钮,slideDirection 的新值未被检测到,div 滑到顶部。 有没有办法解决这个问题? 谢谢

【问题讨论】:

    标签: angular animation router


    【解决方案1】:

    您的属性分配不正确。如下使用。

    <div [@slideTopOrBottom]="slideDirection">
    

    Stackblitz 示例 - https://stackblitz.com/edit/animated-div-height-cj8ezh?file=src/app/app.component.ts

    【讨论】:

    • @FeliceBiagioTirri 查看 stackblitz 代码示例,其中我使用类似方式的单个按钮来切换 div
    • 感谢@ZamAbdulVahid,我已使用您的解决方案修改了我的动画功能。现在我有了一个很好的解决方案,但这并不是我想要的
    猜你喜欢
    • 2018-08-02
    • 2017-09-29
    • 1970-01-01
    • 2019-05-25
    • 2022-11-02
    • 2019-07-27
    • 2016-06-09
    • 1970-01-01
    • 2019-06-28
    相关资源
    最近更新 更多