Angular 4 Animations添加参数

时间:2017-10-19 12:09:25

标签: angular animation

这是我制作的随机动画

    import { trigger, animate, transition, style, keyframes} from '@angular/animations';

    export const customAnimation=
        trigger('customAnimation', [
            transition(':leave', [
                style({position: 'relative'}),
                animate("250ms ease-in", keyframes([
                    style({top: 0}),
                    style({top: -300}),
                ]))
            ])
        ])

然后我将其导入我的组件。 (animations: [customAnimation] ) 但是,我想使用新的参数功能: (http://sudheerjonna.com/blog/2017/06/30/angular-4-2-release-an-improved-version-for-animation-package/)。

例如,-300将成为一个参数,我会通过以下方式在我的模板元素上调用它:

<div [@customAnimation]="{pixels: -300}">

由于我不想使用animation()useAnimation(),因为我想在特定的dom元素上使用(不使用query()),我只是没有使用export const leavingTowardsTop= trigger('leavingTowardsTop', [ transition(':leave', [ style({position: 'relative'}), animate("250ms ease-in", keyframes([ style({top: 0}), style({top: "{{pixels}}"}) ])) ], {params : { pixels: "-30px" }}) ]) 。我设法做到了。

修改

使用它:

[@leavingTowardsTop]="{params : { pixels: '-300px' }}"

唯一问题是,我无法指定除默认值(-30)之外的其他值。我试过了:

[@leavingTowardsTop]="{ pixels: '-300px' }"

'

我也尝试过不指定pxgetWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); ,但仍需要30px

2 个答案:

答案 0 :(得分:10)

您需要参数化top样式,如下所示:

export const customAnimation=
    trigger('customAnimation', [
        transition(':leave', [
            animate("500ms ease-in", keyframes([
                style({'margin-top': "-{{pixels}}px", 'height': "{{pixels}}px", 'margin-bottom': "0px"}),
            ]))
        ], {params : { pixels: "30" }})
    ]);

然后在视图中调用它:

[@customAnimation]="{value: ':leave', params: { pixels: 100)}}"

Demo

答案 1 :(得分:10)

这是我需要的解决方案

[@leavingTowardsTop]="{value: ':leave', params : {topPixels: '-300px'}}"