2016-07-28 8 views
1

Ich bin noch neu in Angular 2 und fragte mich, ob es eine Möglichkeit gibt, eine Komponente "einfliegen" zu lassen und eine andere Komponente "fliegen" zu lassen. Nehmen wir an, ich habe 2 Komponenten: Test1Component und Test2Component und 2 Routen, die auf jeden von ihnen zeigen. Was wäre der beste Weg, dies zu tun?Angular - Animation zwischen den Seiten (nach dem Ändern der Route)

Antwort

3

https://github.com/angular/angular/issues/9845#issuecomment-235799008

RC5 will hopefully be out this week, if not then next week.

For now (with RC5) you will need to do this for every component that is routed to and you want to add animations to:

@Component({ 
    host: { 
    '[@routeAnimation]': 'true' 
    }, 
    animations: [ 
     trigger('routeAnimation', [ 
     transition('* => void', animate(...)), 
     transition('void => *', animate(...)) 
     ]) 
    ] 
}) 
class Cmp { } 

Once we get query() and $variables into animations then you can use <router-outlet> with the URL API that I wrote above.

+0

Danke, aber können Sie mir sagen, wie man es richtig binden? Es gibt mir diesen Fehler: "Kann nicht an @routeAnimation binden, da es keine bekannte native Eigenschaft ist". – TheGuy

+0

Ich habe selbst noch keine Animationen probiert. Hast du https://angular.io/docs/ts/latest/guide/animations.html überprüft? –

-1
+0

das ist eine einfache Möglichkeit, aber ist teuer als Leistung, so dass wenn Sie eine große App haben werde ich nicht empfehlen, auch weil das '*' diese Opazität jedes einzelne Element aus der App anwenden wird. Btw der Selektor sollte '* {}' ohne App vor sein. – mcmwhfy

+0

Angular hat seine eigenen Implementierungen von Routing. Sie werden konfiguriert und gegen sich ändernde Routen über Komponenten getestet. Es gibt eine Menge Flexibilität darin, und wenn die Dinge ein wenig komplizierter werden (wie Unterrouten und Unterkomponenten), wird diese Lösung nicht ausreichen. – Nicky

Verwandte Themen