ionic-team / ionic-team/ionic-framework
bug: Angular Ionic Android back button callback is executing twice
- 主要言語
- TypeScript
- スター
- 52.7k
- フォーク
- 13.3k
- 平均マージ
- 1日 15時間
- マージ済み PR(30日)
- 51
説明
### 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_
コントリビューションガイド
調査の方向性
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.
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- angular, typescript
- 領域
- frontend, mobile
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100