ionic-team / ionic-team/ionic-framework
bug: Angular Ionic Android back button callback is executing twice
- Langage dominant
- TypeScript
- Étoiles
- 52.7k
- Forks
- 13.3k
- Merge moyen
- 1 j 15 h
- PR mergées (30 j)
- 51
Description
### Prerequisites
- [X] I have read the [Contributing Guidelines](https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#creating-an-issue).
- [X] I agree to follow the [Code of Conduct](https://ionicframework.com/code-of-conduct).
- [X] I have searched for [existing issues](https://github.com/ionic-team/ionic-framework/issues) that already report this problem, without success.
### Ionic Framework Version
v8.x
### Current Behavior
`app.component.html`:
```html
```
my page (component) TS file:
```ts
import { Component, inject, OnDestroy, OnInit } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import { Subscription } from 'rxjs';
import { Platform } from '@ionic/angular/standalone';
@Component({
selector: 'e-test',
standalone: true,
imports: [CommonModule, RouterModule],
templateUrl: './test.component.html',
styleUrls: ['./test.component.scss'],
})
export class TestComponent implements OnInit, OnDestroy {
private readonly _platform = inject(Platform);
private _backSub!: Subscription;
ngOnInit() {
this._backSub = this._platform.backButton.subscribeWithPriority(
101,
() => {
console.log('back button called');
},
);
}
ngOnDestroy(): void {
if (this._backSub) this._backSub.unsubscribe();
}
}
```
As far as I can see, everything is correct! But my callback will be called twice!
Can someone help? Thanks a lot ❤️
### Expected Behavior
The callback should be called only once, because we subscribed to `subscribeWithPriority` only once... And we also unsubscribe from it, whenever the component is destroyed.
### Steps to Reproduce
1. Simply click the Android native back button.
2. Then you will see that 'back button called' console log message shows twice.
### Code Reproduction URL
https://stackblitz.com/edit/wusmwpve?file=src%2Fapp%2Fexample.component.ts
### Ionic Info
Ionic:
Ionic CLI : 7.2.0
Utility:
cordova-res : not installed globally
native-run : not installed globally
System:
NodeJS : v20.11.0
npm : 10.2.4
OS : Windows 10
### Additional Information
_No response_
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Start by running the linked StackBlitz reproduction and inspect app.component.html and the example component TypeScript file, especially the back-button subscription and its cleanup. Confirm whether one Android back-button press produces two logs, then trace the relevant framework behavior to identify the cause; done means the callback runs once and the reproduction still works.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- angular, typescript
- Domaine
- frontend, mobile
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100