2016-11-02 14 views
1

上で直接アニメーションハンドラを追加し、アニメーションのハンドラはinnerHTMLプロパティ、私はコンポーネントセレクタに直接それを置くしたい角度2 - すべての角2 APIのアニメーションの例では、セレクタ

に実装されています。以下の例では

[@visibility]="visibility"divタグにあるが、私はselector: 'vps-node'でそれをしたいので、私のテンプレートが

@Component({ 
selector: 'vps-node', 
template: `<div [@visibility]="visibility"><ng-content></ng-content></div>`, 
animations: [ 
    trigger('visibility', [ 
     state('in', style({ transform: 'translateX(0)' })), 
     transition('void => *', [ 
      animate(300, keyframes([ 
       style({ opacity: 0, transform: 'translateX(-100%)', offset: 0 }), 
       style({ opacity: 1, transform: 'translateX(15px)', offset: 0.3 }), 
       style({ opacity: 1, transform: 'translateX(0)', offset: 1.0 }) 
      ])) 
     ]), 
     transition('* => void', [ 
      animate(300, keyframes([ 
       style({ opacity: 1, transform: 'translateX(0)', offset: 0 }), 
       style({ opacity: 1, transform: 'translateX(-15px)', offset: 0.7 }), 
       style({ opacity: 0, transform: 'translateX(100%)', offset: 1.0 }) 
      ])) 
     ]) 
    ]) 
    ] 
}) 
+0

あなたはComponent' @ ''上host'プロパティを試してみましたか?次のようになります: 'host:{'@visibility': 'visibility'}'? – PierreDuc

+0

はい、残念ながらアニメーションをトリガーしていないようです。 – ndesign11

答えて

1

は、私がこの私を共有しようと思いました親divタグから単に<ng-content>でありますホスト要素上でアニメーショントリガーを作成することができました。

ページ遷移を処理する次のコードを確認してください。

@Component({ 
    selector: 'styles', 
    templateUrl: './styles.template.html', 
    host: { 
     '(@routeAnimation.start)': 'pageEnterStarted($event)', 
     '(@routeAnimation.done)': 'pageEnterCompleted($event)', 
     '[@routeAnimation]': 'true', 
    }, 
    animations: [ 
     trigger('routeAnimation', [ 
      state('*', style({ opacity: 1})), 
      transition('void => *', [ 
       style({ opacity: 0}), 
       animate(250) 
      ]), 
      transition('* => void', animate(250, style({opacity: 0}))) 
     ]) 
    ] 
}) 
export class StylesComponent { 
    pageEnterStarted() { 
    } 

    pageEnterCompleted() { 
    } 
} 
+0

それは働いて、私の答えを参照してください。すべてのヒントをありがとう! – ndesign11

0

大括弧で囲む必要があるhost:プロパティが表示されます。

ホスト:{ '[ @visibility ]': '可視'}、

selector: 'vps-row-node', 
host: { '[@visibility]': 'visibility' }, 
template: `<ng-content></ng-content>`, 
animations: [...] 
+0

は私に48時間の回答を受け入れることはできません... – ndesign11