基本的には、* ngIfディレクティブを持つ要素にスムーズなアニメーション(jQueryのslideUp/slideDownメソッドに似ています)を追加します。これまでのところ、私はこれを試してみた:AngularアニメーションでjQuery slideUp()/ slideDown()を複製する方法は?
trigger('slideUpDown', [
transition('void => *', [
style({height: 0, margin: 0, padding: 0}),
animate(1500, style({height: '*', margin: '*', padding: '*'}))
]),
transition('* => void', [
style({height: '*', margin: '*', padding: '*'}),
animate(1500, style({height: 0, margin: 0, padding: 0}))
])
])
テンプレート:これは正しく動作していない
<div>
<label (click)="showEmailForm = !showEmailForm"><strong>Mail</strong></label>
</div>
<div [@slideUpDown] *ngIf="showEmailForm">
<campaign-email-channel-form [channel]="channels?.mail" [isSaving]="isSavingEmailChannel" (save)="onSaveEmailChannel($event)"></campaign-email-channel-form>
</div>
。アニメーションが設定されているdivは正しくアニメーション化されているように見えますが、そのコンテンツ(フォームコンポーネント)はすぐに完全に表示されます。
また、コンポーネント自体にアニメーションと* ngIfを設定しようとしましたが、アニメーションコールバックを使用してトリガーされたことを確認できたとしても、アニメーションは何もしません。
包含部門にスタイルとして 'overflow:hidden'を追加しました –
これで解決しました。 – Christian