:enter
アニメーションは、コンポーネントが最初にレンダリングされるときに要素に適用されます。それを防ぐ方法はありますか?
width
アニメーションの簡単な例については、 このプランカー を確認してください。
transition(':enter', [
style({width: 0}),
animate(250, style({width: '*'})),
]),
空の:enter
アニメーションをビューの親に追加するだけです。この場合、最初の子:enter
アニメーションは無効になりますが、それ以降のアニメーションは機能します。
テンプレート:
<div @parent>
<div @child>test</div>
</dif>
アニメーション:
trigger('parent', [
transition(':enter', [])
])
trigger('child', [
transition(':enter', [
style({width: 0}),
animate(250, style({width: '*'})),
]),
])
ここ より詳細な説明があります。
そのための void 状態があります。これは基本的に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'))
])
これが意味するのは、要素にまだ状態がなく、any状態に遷移するときはいつでも、そうすべきではないということです。アニメートします。
したがって、あなたの場合、次のように書くことができます。
transition('void => :enter', animate(0))
それが理にかなっていることを願っています。