diff --git a/angular/src/directives/navigation/ion-router-outlet.ts b/angular/src/directives/navigation/ion-router-outlet.ts index 00d208bc86..c781f315ea 100644 --- a/angular/src/directives/navigation/ion-router-outlet.ts +++ b/angular/src/directives/navigation/ion-router-outlet.ts @@ -197,6 +197,10 @@ export class IonRouterOutlet implements OnDestroy, OnInit { const active = this.stackCtrl.getLastUrl(stackId); return active ? active.url : undefined; } + + getActiveStackId() { + return this.stackCtrl.getActiveStackId(); + } } function emitEvent(el: HTMLElement, view: RouteView) { diff --git a/angular/src/directives/navigation/ion-tabs.ts b/angular/src/directives/navigation/ion-tabs.ts index d5f2e43391..20cebe0443 100644 --- a/angular/src/directives/navigation/ion-tabs.ts +++ b/angular/src/directives/navigation/ion-tabs.ts @@ -1,5 +1,4 @@ import { Component, ContentChild, HostListener, ViewChild } from '@angular/core'; -import { TabButtonClickDetail } from '@ionic/core'; import { NavController } from '../../providers'; import { IonTabBar } from '../proxies'; @@ -57,14 +56,14 @@ export class IonTabs { } } - @HostListener('ionTabButtonClick', ['$event.detail']) - onTabButtonClick(detail: TabButtonClickDetail) { - const { tab, selected } = detail; + @HostListener('ionTabButtonClick', ['$event.detail.tab']) + select(tab: string) { + const selected = this.outlet.getActiveStackId() === tab; const href = `${this.outlet.tabsPrefix}/${tab}`; const url = selected ? href : this.outlet.getLastUrl(tab) || href; - this.navCtrl.navigateBack(url, true); + return this.navCtrl.navigateBack(url, true); } } diff --git a/angular/src/directives/navigation/stack-controller.ts b/angular/src/directives/navigation/stack-controller.ts index fcd12fd1e9..f2955e0018 100644 --- a/angular/src/directives/navigation/stack-controller.ts +++ b/angular/src/directives/navigation/stack-controller.ts @@ -90,7 +90,7 @@ export class StackController { return views.length > 0 ? views[views.length - 1] : undefined; } - private getActiveStackId(): string | undefined { + getActiveStackId(): string | undefined { return this.activeView ? this.activeView.stackId : undefined; }