2016-04-09 16 views
0

Ich versuche, eine Slide Down/Up-Animation auf eine Komponente anzuwenden, ich habe auch die unten stehende Post gesehen:Angular2 Animation auf eine Komponente

https://stackoverflow.com/a/34170712/2755616

Diese Lösung scheint auf einem DIV zu arbeiten, aber in meinem Fall habe ich eine Komponente in einer Seite, die nur angezeigt wird, wenn bestimmte Bedingungen erfüllt sind. Wenn diese Bedingung erfüllt ist, möchte ich, dass die Komponente nach unten gleitet, und wenn sie wieder falsch wird, möchte ich, dass sie gleitet und unsichtbar wird.

Toggle Component

Aber das scheint nicht zu funktionieren, wenn Richtlinien in über Stackoverflow Frage bereitgestellt folgende.

Antwort

2

Sie können die Anweisung in der Antwort, die Sie erwähnten, ändern, damit sie eine Eingabe vom Typ boolean und eine Änderung der Eingabe, die Sie anzeigen/ausblenden, für das Element/die Komponente benötigt. plunker with example

@Directive({ 
    selector : '[animate-box]', 
}) 
export class AnimateBox { 
    constructor(private _ab: AnimationBuilder, private _e: ElementRef) {} 

    @Input('animate-box') 
    set animateBox(isVisible: boolean) { 
    let animation = this._ab.css(); 
    // if isVisible is true, animate show. if it's false animate hide 
    ... 
    } 
} 

Und in Ihrer Komponente:

<some-component [animate-box]="isVisible"></some-component> 

Eine Sache im Auge zu behalten ist, dass für die Animation im Plunker um sollte Ihr Element/Komponente zu arbeiten, um eine Anzeige hat, Geben Sie block ein. Aus diesem Grund hat es überhaupt nicht für Sie funktioniert, da die Komponenten standardmäßig haben.

+0

Vielen Dank Abdul Rahman, das war hilfreich, jetzt noch zwei Fragen: 1. Wenn ich Höhe in AnimateBox-Komponente mit 100% (anstelle von 100px) ersetzen, funktioniert der Folie-Effekt überhaupt nicht. Da die Höhe der gleitenden Komponente unbekannt ist, möchte ich 100% verwenden, anstatt sie auf eine feste Anzahl von Pixeln zu setzen. 2. Ich muss die Komponente in meine Seite bedingt aufnehmen, also benutze ich * ngIf, aber wenn ich diesen Folieeffekt auf diese Komponente anwende funktioniert es anscheinend nicht, da die Komponente in DOM nicht vorhanden ist, irgendwelche Hinweise darauf ? –

+0

Eigentlich habe ich eine Seite mit verschiedenen Abschnitten und jeder Abschnitt hat einen Link "Datensatz hinzufügen", wenn der Link "Datensatz hinzufügen" angeklickt wird, möchte ich das entsprechende Formular (welches eine Komponente ist) auf slideIn. –

+0

@NaveedAhmed Ich habe einige Änderungen an der 'ngIf' Direktive vorgenommen und eine neue animierte Version erstellt. [überprüfen Sie diesen Plünderer] (http://plnkr.co/edit/GxDQMWuUN4xZCbcraf66?p=preview). Ich werde versuchen, es in meiner Antwort zu erklären, wenn es für Sie funktioniert. – Abdulrahman

Verwandte Themen