2016-07-01 9 views
6

Obecnie próbuję zaimplementować niektóre animacje w mojej witrynie Angular2 za pomocą komponentu ng2 wbudowanego w komponent animations. Do tej pory pracowałem poprzez Angular 2 Developer Guide - Animations podany w dokumentacji. Mimo to natknąłem się na kilka pytań, mam nadzieję, że społeczność SO może być w stanie pomóc. Moje pierwsze pytanie/problem wydaje mi się, że animacja (z tego co wiem) nie działa na ładowanie strony. Wydaje się, że działa idealnie, jeśli przełączyłem się na widok, a następnie powróciłem do widoku z animacją. Jest to kod obecnie używam do animacji w pytaniu (mogę dostarczyć cały komponent w razie potrzeby):Animacja Angular2 przy ładowaniu i przechodzeniu strony

animations: [ 
    trigger('kissState', [ 
    state('in', style({opacity: 1})), 
    transition('void => *', [ 
     style({opacity: 0}), 
     animate('250ms ease-in-out') 
    ]), 
    transition('* => void', [ 
     animate('250ms ease-in-out', style({opacity: 0})) 
    ]) 
    ]) 
] 

Byłem pod wrażeniem, że void => * by ustawić mój elementu DOM do opacity:0 i po nim wprowadzono in do widoku, który byłby opacity:1. Innym problemem, który wydaje mi się być, jest to, że moje nawigacje nie działają na urządzeniach mobilnych. Tak naprawdę nie przeniosłem ich na mój serwer, ale rozwijając się lokalnie i patrząc na moje urządzenie mobilne za pośrednictwem węzła localtunnel, nie ma żadnych animacji. Może tak być dlatego, że działa dziwny sposób, więc nie przejmuję się tym zbytnio, dopóki naprawdę nie przetestuję go na prawdziwym serwerze. Oto druga animacja jest w szczególności, gdy zauważyłem, że nie działa na moim urządzeniu przenośnym:

animations: [ 
    trigger('offScreenMenu', [ 
    state('inactive', style({ 
     opacity: 0, 
     zIndex: -10 
    })), 
    state('active', style({ 
     backgroundColor: 'rgba(255, 255, 255, 0.8)', 
     zIndex: 10 
     })), 
    transition('inactive => active', animate('250ms ease-in')), 
    transition('active => inactive', animate('250ms ease-out')) 
    ]) 
] 

Jeden ostatni problem miewam który jest znany problem przez zespół Angular2 jest animacje na widoku routera zmiana. Obecnie istnieje SO question, który zajmuje się tym i biletem na repo Angular2 (wspomniane w komentarzu Güntera Zöchbauera w pytaniu SO). W związku z tym byłem ciekawy, czy były jakieś obecne obejścia? Przez kilka krótkich badań wyglądało na to, że w pewnym momencie mogły zostać zaimplementowane ng-enter i ng-leave, które można by wykorzystać w ich css do tego, ale z tego, co mogę powiedzieć, te zostały wycofane. Nadal trzeba zrobić trochę więcej badań, więc mogłem się mylić.

Z góry dziękuję za pomoc!

AKTUALIZACJA (7.7.16): W porządku, więc postanowiłem wrócić do niego i po zadzieraniu z czasem animacji ładowania strony wygląda na to, że działa. Chociaż muszę zrobić z grubsza animację 1000ms, żeby ją zauważyć. Co prowadzi mnie do pytań (lub więcej myśli), że wierzę, że animacja zaczyna się wykonywać, zanim DOM zostanie w pełni załadowany. Co wydaje się trochę dziwne. Nadal pracuję nad mobilną animacją. Wygląda na to, że w tej chwili będę zgłaszał problem związany z repozytorium Githuba, ponieważ trochę go zepsułem i nie mogę sprawić, żeby działał. Również nie ma żadnej wzmianki o animacjach mobilnych, które nie działają dla NG2.

UPDATE (7.13.16): Wygląda na to, że zespół Angular2 przygotował kilka poprawek do wydania z RC5, które powinny rozwiązać moje powyższe zastrzeżenia. Chcemy odpowiedzieć na moje własne pytanie i zamknąć.

Odpowiedz

3

Przejście do zamknięcia tego pytania. Większość problemów, o których wspomniałem powyżej, wygląda tak, jakby zostały rozwiązane w RC5 Angular2. Wygląda na to, że będzie to gra czekająca do tego czasu. Oto linki do odpowiednich zagadnień/PRS w kątowym repo:

Mam przeczucie, że elementy były animating przed obciążenie strona była prawidłowa i został rozwiązany w tym PR: https://github.com/angular/angular/pull/9887

RC5 będzie zawierać poprawki, aby umożliwić animacje po zmianie trasy przez ten PR: https://github.com/angular/angular/pull/9933 i NG2 w końcu pozwolą na funkcję query() dla animacji, które będą świetne (więcej można znaleźć pod tym względem pod numerem here).

Co do problemu z telefonem komórkowym. Nadal próbuję znaleźć sposób na odtworzenie błędu na urządzeniu mobilnym (tj. - w plunkerze), ale jak dotąd nie udało się. Nie jest to jednak numer breaking dla mojej witryny, więc będę poruszał się do tej pory.

1

kątowa 2 ostateczne rozwiązanie

Możemy użyć @routeAnimation wbudowany w dyrektywie, aby osiągnąć ten cel, jak na mojej poprzedniej odpowiedzi here który zawiera upadać.