Анимации угловой маршрутизации время от времени воспроизводятся на мобильном Chrome

Мне настроили анимацию маршрутизации для всех страниц моего приложения, то есть каждый компонент, на который можно направить, имеет

@Component({
    selector: '...',
    templateUrl: '...',
    styleUrls: ['...'],
    animations: [
        trigger('flyInOut', [
            state('in', style({ opacity: 1, transform: 'translateX(0)' })),
            transition('void => *', [
                style({
                    opacity: 0,
                    transform: 'translateX(-100%)'
                }),
                animate('0.3s ease-in')
            ]),
            transition('* => void', [
                animate('0.3s 10 ease-out', style({
                    opacity: 0,
                    transform: 'translateX(100%)'
                }))
            ])
        ])
    ]
})

в их .ts файл и

<section [@flyInOut]="active">
   ...
</section>

в своем шаблоне. Таким образом, теоретически каждая страница должна лететь слева и выходить на правую сторону экрана. Это отлично работает на настольном Chrome, без исключений.

Однако на моем планшете под управлением мобильного Chrome 55.0.2883.91 (рабочий стол: .87) анимация воспроизводится только при некоторых просмотрах и, по-видимому, только при первом посещении этой страницы. Я что-то здесь упускаю для мобильных браузеров?

Это с Angular 4.0.0-beta.1, кстати.

1 ответ

Это должно работать. Не знаю точную причину. Не уверен, но вы можете попробовать что-то ниже (ничего не менять, просто дать вам другой способ сделать это).

animations: [
        trigger('flyInOut', [

             <!--- not required at all ----------->
               state('in', style({ opacity: 1, transform: 'translateX(0)' })),
             <!--- not required at all ----------->

            transition(':enter', [       //<<---changed line but same thing.
                style({
                    opacity: 0,          //<<---not sure with opacity. if view doesn't come up, change it to 1
                    transform: 'translateX(-100%)'
                }),
                animate('0.3s ease-in')
            ]),
            transition(':leave', [       //<<---changed line but same thing.
                animate('0.3s 10 ease-out', style({
                    opacity: 0,
                    transform: 'translateX(100%)'
                }))
            ])
        ])
    ]


<section [@flyInOut]>   //<<----if you are not using active state/variable anywhere then remove it
   ...
</section>
Другие вопросы по тегам