2

バージョン 4.2 より前 (現時点では RC) では、ズームアニメーション用に次のコードを使用していました。

export const magnifyAnimation = trigger('magnify', [
    state('default', style({
        'transform': 'scale(1)'
    })),
    state('magnified', style({
        'transform': 'scale(1.3)'
    })),
    transition('default <=> magnified', [
        animate('430ms ease-out')
    ])
]);

現在、4.2 は入力パラメーターをサポートしているので (これを長い間待っていました)、次のようにします。

component code:

<button
    [@magnify]="{ value: state, params: { scaleFactor: '1.3' }}"
    (mouseenter)="state = 'magnified'"
    (mouseleave)="state = 'default'">
        Hover me
</button>

アニメーションコードは次のように変更されました。

const zoomEffect = animation([
    animate('430ms ease-out', style({
        'transform': 'scale({{scaleFactor}})'
    }))
], { params: { scaleFactor: '1' } });

export const magnifyAnimation = trigger('magnify', [
    transition('default => magnified', useAnimation(zoomEffect), { params: { scaleFactor: '1.3' } }),
    transition('magnified => default', useAnimation(zoomEffect), { params: { scaleFactor: '1' } })
]);

しかし、アニメーション コードの状態で定義されたスタイルがない場合、アニメーションが終了した後、要素 (この場合はボタン) は常に自然なサイズにジャンプします。そして、state() コード ブロックで入力パラメータを指定する方法がわかりません。

私もこれを試しました:

state('magnified', style({
    'transform': '*'
}))

アニメーションの最後に変換の値が保持されることを望んでいましたが、も達成されません...

4

0 に答える 0