I have an Angular/Ionic application that can run both on native and web (iPhone, Android, and Web). I set up a custom page transition animation, which looks good on mobile but weird on a large screen like on desktop, so I would like to disable these animations and have traditional page loading like you would see on a normal website.
My app.module
imports contains the following line, overriding the traditional sliding animation:
IonicModule.forRoot({
navAnimation: myTransitionAnimation
}),
I am aware of Platform
and how I can use it to identify what the app is currently running on like so:
this.platform.is('mobile')
but doing this is only available in an app.component.ts
not in the app.module.ts
...right?
So basically my question is how to best do the following in my app.module.ts
(pseudo code)
IonicModule.forRoot({
if(isMobileDevice) {
navAnimation: myTransitionAnimation
} else {
animated: false //the key/value to disable transition animations
}
}),
I did it like this to disable page animations (in web and phone):
import { Animation } from '@ionic/core'
...
IonicModule.forRoot({
backButtonText: '',
mode: 'ios',
navAnimation: (AnimationC: Animation): Promise<Animation> => { return Promise.resolve(new AnimationC()); }
}),
Then I used this to animate when opening a new page: https://github.com/Telerik-Verified-Plugins/NativePageTransitions
constructor(
private nav: NavController,
private transition: NativePageTransitions
) { }
public push(url: string): void {
this.transition.slide({ direction: 'up', duration: 350 });
this.nav.navigateForward(url);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With