Cordova - Angular 4 - есть ли способ переписать андроид кнопку устройства назад - PullRequest
0 голосов
/ 05 октября 2018

Я работаю над приложением, в котором я уже добавил один значок возврата в заголовке на каждой странице.Но мне нужно добиться той же функциональности с помощью кнопки возврата устройства.Каждая страница маршрутизируется с некоторыми параметрами, к которым я не могу получить доступ в сервисе util.js.

1.app.component.ts

ngOnInit() {
    document.addEventListener('deviceready', (evt) => this.onDeviceReady(evt), false);
    document.addEventListener('resume', (evt) => this.onResumeCall(evt), false);
    document.addEventListener('offline', this.inOfflineMode, false);
    document.addEventListener('online', this.inOnlineMode, false);
    document.addEventListener('backbutton', (evt) => this.onBackKeyDown(evt), false);
    this._config.init();
    this.analyticsService.updateAppOpenCount();
  }
  • Здесь я могу зарегистрировать событие кнопки с помощью функции, которая реализована в другом служебном файле.

2.util.js

public deviceBackButton(): void {
        if (window.cordova) {
            if (window.location.hash === '#/') {
               // window.history.back();
               navigator.app.backHistory();
                navigator.app.exitApp();
            } else {
                window.history.back();
            }
        }

    }

Это функция обработчика кнопки возврата, реализованная в util.js, которая является не чем иным, как сервисом.Я не могу добавить компонент в эту службу.

У нас есть какие-то другие способы, чтобы мы могли переписать этот обработчик кнопки возврата в любом компоненте или на странице, используя cordova и angular 4/6?

В настоящее время я могу вернуться с первой страницы, но со второго просмотра приложения становится плохо.

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Я решил проблему с помощью HostListener ...

Я сделал следующим образом ...

Реализуйте метод ниже в вашем контроллере.

@HostListener('window:popstate') backbuttonpressed() {
    console.log('back button pressed');
  }

Toиспользуйте HostListener вы должны сначала импортировать его.

import { HostListener } from '@angular/core'
0 голосов
/ 05 октября 2018

Я не делал что-то подобное в angular, cordova.Но я сделал это в ответ.Я искал это для кордовы, я нашел это.когда пользователь нажимает кнопку «backbutton» кнопки возврата устройства, попробуйте добавить для этого прослушиватель событий.

document.addEventListener("backbutton", yourCallbackFunction, false);

yourCallbackFunction будет запущен, когда пользователь нажмет кнопку возврата устройства.https://cordova.apache.org/docs/en/1.6.0/cordova/events/events.backbutton.html

...