ionic-framework
ionic-framework copied to clipboard
bug: Alert button handlers are executed outside the angular zone in certain cases
Prerequisites
- [X] I have read the Contributing Guidelines.
- [X] I agree to follow the Code of Conduct.
- [X] I have searched for existing issues that already report this problem, without success.
Ionic Framework Version
v7.x
Current Behavior
Button handlers of alerts seem to be executed outside the Angular Zone (at least in certain cases).
Strangely enough, when the page is loaded with device emulation, the issue does not seem to appear:
This is causing issues when calling angular related functions like trying to start navigation, since these must be called inside the angular zone.
Expected Behavior
We would always expect a button handler to run inside the Angular Zone.
Steps to Reproduce
- Clone provided reproduction repository
- npm run start
- Open browser dev tools
- Make sure device emulation is not enabled
- Click the button on Tab 1
- Click the button in the alert
- Watch the dev console output
Code Reproduction URL
https://github.com/Airdevelopments/ionic-alert-ngzone
Ionic Info
Ionic:
Ionic CLI : 7.2.0 (C:\nvm\v18.16.0\node_modules@ionic\cli) Ionic Framework : @ionic/angular 7.7.2 @angular-devkit/build-angular : 17.2.0 @angular-devkit/schematics : 17.2.0 @angular/cli : 17.2.0 @ionic/angular-toolkit : 9.0.0
Capacitor:
Capacitor CLI : 5.7.0 @capacitor/android : not installed @capacitor/core : 5.7.0 @capacitor/ios : not installed
Utility:
cordova-res : 0.15.4 native-run : 2.0.1
System:
NodeJS : v18.16.0 (C:\Program Files\nodejs\node.exe) npm : 9.8.0 OS : Windows 10
Additional Information
If you require any addtional information, please let me know.
Same problem here.
Thank you for the issue. I'm able to replicate this, but I need to dig deeper into why it's happening.
It looks like the issue is around how we've set up the callback to run in Angular Standalone, specifically. Normally we use a util that ensures the callbacks are run in the Angular zone, but that may not be getting used in a standalone app. I'll raise this with the team so we can take a closer look 👀