Description
Bug Report
Ionic Info
Ionic:
ionic (Ionic CLI) : 4.5.0 (/usr/local/lib/node_modules/ionic)
Ionic Framework : @ionic/angular 4.0.0-beta.19
@angular-devkit/build-angular : 0.10.7
@angular-devkit/schematics : 7.0.7
@angular/cli : 7.0.7
@ionic/angular-toolkit : 1.2.0
System:
NodeJS : v10.13.0 (/usr/local/bin/node)
npm : 6.4.1
OS : macOS Mojave
Describe the Bug
Using Angular's Location.back()
has no navigation animation instead of the back navigation animation.
Steps to Reproduce
Steps to reproduce the behavior:
- Clone this repo on your machine: https://github.com/KevinKelchen/ionic4-stack-page-reuse . It is a slightly modified version of the
sidemenu
Angular stater template. You will need to switch to the custom-back-button branch. - In the terminal, path into the repo root and run
npm i
. - Run
ionic serve
. - Open the Chrome DevTools and click the
Toggle device toolbar
button to simulate a mobile device. From the device dropdown choose an iOS device such as an iPhone X.- Choosing an iOS device will use the iOS styling mode. This issue is present in both modes; it's just that the iOS styling mode makes the navigation animation direction used more obvious than the default Material Design navigation animation.
- Click the Menu icon and then
List
. - Click
Item 1
to forward navigate to the detail screen forItem 1
. - Click
Item 2
to forward navigate to the detail screen forItem 2
. - Click
Item 3
to forward navigate to the detail screen forItem 3
. - Click
Item 4
to forward navigate to the detail screen forItem 4
. - Notice the in-app Back button.
- This is not an
ion-back-button
but is rather a similarly styled, customapp-back-button
component that, when you click it, usesimport { Location } from '@angular/common'
and does aLocation.back()
. - The rationale for using a custom Back button instead of
ion-back-button
is stated in IonRouterOutlet.pop() doesn't properly update the browser navigation history #15428 (see this comment) and is also mentioned in Ionic 4 - StackController Page reuse uses old Page data #16516.
- This is not an
- Click the in-app Back button and watch the navigation animation. You will see as you continue to click the Back button that it uses no navigation animation even though it's using
Location.back()
to go back in the browser history stack.
Related Code
A sample application has been provided. See the Steps to Reproduce above.
Expected Behavior
I expected that using Angular's Location.back()
to navigate back in the browser's history stack would use the back navigation animation instead of no navigation animation.
Additional Context
See the Steps to Reproduce above for the rationale for using a custom Back button and the related GitHub issues. This behavior change was introduced in Beta 17--perhaps related to fixing #16367.
FWIW, using the Android back button does seem to animate appropriately as does the ion-back-button
. The browser back/forward buttons have no navigation animation but that seems appropriate given that it's in a browser context.
Thanks again for all that you do in making a great framework! 😀