mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-15 09:34:19 +08:00
38 lines
951 B
TypeScript
38 lines
951 B
TypeScript
import { Directive, HostListener, Optional } from '@angular/core';
|
|
|
|
import { Config } from '../../providers/config';
|
|
import { NavController } from '../../providers/nav-controller';
|
|
|
|
import { IonRouterOutlet } from './ion-router-outlet';
|
|
|
|
@Directive({
|
|
selector: 'ion-back-button',
|
|
inputs: ['defaultHref'],
|
|
})
|
|
export class IonBackButtonDelegate {
|
|
|
|
defaultHref: string | undefined | null;
|
|
|
|
constructor(
|
|
@Optional() private routerOutlet: IonRouterOutlet,
|
|
private navCtrl: NavController,
|
|
private config: Config
|
|
) {}
|
|
|
|
/**
|
|
* @internal
|
|
*/
|
|
@HostListener('click', ['$event'])
|
|
onClick(ev: Event) {
|
|
const defaultHref = this.defaultHref || this.config.get('backButtonDefaultHref');
|
|
|
|
if (this.routerOutlet && this.routerOutlet.canGoBack()) {
|
|
this.routerOutlet.pop();
|
|
ev.preventDefault();
|
|
} else if (defaultHref != null) {
|
|
this.navCtrl.navigateBack(defaultHref);
|
|
ev.preventDefault();
|
|
}
|
|
}
|
|
}
|