角.有没有办法在初始渲染时跳过输入动画?

Ser*_*lov 16 angular2-animation angular

:enter第一次渲染组件时,动画将应用于元素.有没有办法防止它?

检查此plunker以获取width动画的简单示例:

transition(':enter', [
  style({width: 0}),
  animate(250, style({width: '*'})),
]),
Run Code Online (Sandbox Code Playgroud)

Val*_*kov 15

只需:enter向视图父级添加一个空动画即可.在这种情况下,:enter将禁用初始子动画,但进一步的动画将起作用.

模板:

<div @parent>
    <div @child>test</div>
</dif>
Run Code Online (Sandbox Code Playgroud)

动画:

trigger('parent', [
    transition(':enter', [])
])
trigger('child', [
    transition(':enter', [
      style({width: 0}),
      animate(250, style({width: '*'})),
    ]),
])
Run Code Online (Sandbox Code Playgroud)

在这里您可以找到更详细的解释.


D. *_*ser 5

虚无状态。基本上代表一个null状态。

在实践中,可能看起来像这样:

trigger('myState', [
  state('previous', style({ transform: 'translateX(-100%)' })),
  state('current', style({ transform: 'translateX(0)' })),
  state('next', style({ transform: 'translateX(100%)' })),
  transition('void => *', animate(0)), // <-- This is the relevant bit
  transition('* => *', animate('250ms ease-in-out'))
])
Run Code Online (Sandbox Code Playgroud)

这意味着,每当一个元素具备的状态着呢,到转换任何状态,它不应该有生命的。

因此,在您的情况下,可以这样写:

transition(':enter', animate(0))
Run Code Online (Sandbox Code Playgroud)

我希望这是有道理的。

  • `错误:不支持提供的转换表达式“void =&gt; :enter”` (3认同)
  • 您是否尝试过此解决方案?尝试一下。首先,`:enter`是`void =&gt; *`的快捷方式,所以`void =&gt;:enter`没有意义。其次,我已经在组件中使用了`:enter`动画,这是问题的根源,因为即使在第一次绘制时,输入也会获得动画效果。 (2认同)