2017-02-24 5 views
11

私はこのようなエントリでアニメーションできるコンポーネントを持っています。 handleRemovalメソッドが実行され、イベントエミッターが(observablesを使用して)コンポーネントのリストからコンポーネントをフィルターします。しかし:休暇アニメーションが実行されません:Leave&ObservableフィルタでAngular2アニメーションを実行

@Component({ 
     animations: [ 
      trigger(
      'enterAnimation', [ 
       transition(':enter', [ 
       style({transform: 'translateY(100%)', opacity: 0}), 
       animate('500ms', style({transform: 'translateY(0)', opacity: 1})) 
       ]), 
       transition(':leave', [ 
       style({transform: 'translateY(0)', opacity: 1}), 
       animate('500ms', style({transform: 'translateY(100%)', opacity: 0})) 
       ]) 
      ] 
      ) 
     ], 
     template: ` 
      <div class="mb1 card text-xs-center rounded" [@enterAnimation]="show"> 

...

export class ContentPropertyComponent { 

    show: boolean = false; 

    constructor(private router: Router) { 
     this.show = true; 
    } 

    handleRemoval(contentProperty: PropertyModel) { 
     this.show = false; 
     this.delete.emit(this.contentProperty); 
    } 
} 

すべてのヘルプは大歓迎します。 (私は疑うよう)あなたは、あなたがvoid => ** => void遷移定義を使用する必要があります以前のバージョンを使用しているので、もし

+1

は、あなたがそれを理解するために何かを提供することはできますか?それは理解できません。私たちはあなたがemitをどのように使うのか、そしてその場で何が起こるのかを見なければなりません。 – micronyks

+0

あなたはplnkrや他の[mcve](https://stackoverflow.com/help/mcve)を追加することができます –

+0

助けてくれてありがとうございます。私はこの問題を解決しました。問題は私がcontentPropertyオブジェクトをコンテナ – rhysclay

答えて

1

角度は、バージョン2.1.0:enter:leaveショートカットを導入しました。または、角度分布を2.1.0+にアップグレードします。

あなたのコードを変更するに応じて角度2.0+

animations: [ 
    trigger("enterAnimation", [ 
     transition('void => *', [ 
      style({transform: 'translateY(100%)', opacity: 0}), 
      animate('500ms', style({transform: 'translateY(0)', opacity: 1})) 
     ]), 
     transition('* => void', [ 
      style({transform: 'translateY(0)', opacity: 1}), 
      animate('500ms', style({transform: 'translateY(100%)', opacity: 0})) 
     ]) 
    ]) 
    ] 

Plunkerで動作します:https://plnkr.co/edit/xW38PWgD3SQyhRv09IUW?p=preview

+0

明らかに、OPがこれらの要件を満たしているか、 ':enter'トランジションが機能していません。おそらく、デモが動作する理由は、オブザーバブルを組み込んでいないからです。 – isherwood

関連する問題