角4个动画添加参数

问题描述:

这里是一个随机动画我做了角4个动画添加参数

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" }}) 
    ]) 

唯一的问题,我不能指定非默认的(-30)的另一个值。我想:

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

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

我也试过不指定'px,但它仍然需要30PX

这是我需要

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

这种语法记录在任何地方?如果有几个转换为值提供值,这看起来如何? – Sam

您需要参数化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

+0

我可以添加一个默认值的解决方案? – Scipion

+0

更新了我的示例 –

+0

而且我的确编辑了我的 – Scipion