Angular 7 Cordova 8后退按钮覆盖不起作用

时间:2018-11-04 12:33:08

标签: android angular cordova onsen-ui angular7

我正在使用Angular 7和Cordova 8开发应用程序。我想覆盖cordova后退按钮事件,以通过添加事件监听器来防止应用程序关闭,如cordova docs

中所述。

我的代码如下:

let onDeviceReady = () => {
  enter code hereconsole.log("Bootstraping Module...")
  document.addEventListener("backbutton", (e) => {e.preventDefault(); e.stopPropagation(); console.log("backbutton"); return false;}, false);
  platformBrowserDynamic().bootstrapModule(AppModule);
};
document.addEventListener('deviceready', onDeviceReady, false);

根据文档,这应防止应用程序关闭。我知道preventDefaultstopPropagationreturn false调用不是必需的,但是我发现了解决我问题的可能解决方案,但都没有用。

当我按下“后退”按钮时,我看到backbutton打印,但是该应用程序仍在关闭。 在Android上进行了测试。

更新:使用logcat调试问题后,当本机Android应用中的后退按钮被覆盖时,我会看到消息WARNING: Back Button Default Behavior will be overridden. The backbutton event will be fired!记录在CoreAndroid插件类中。仍然当我按下按钮时,应用程序退出

更新:问题与OnsenUI有关,请在下面查看我的答案

2 个答案:

答案 0 :(得分:0)

我们在app.component.ts ngOnInit中传递了后退按钮逻辑

import {Renderer2} from '@angular/core';

constructor(private renderer: Renderer2){}

ngOnInit(){

  const devicebackbutton = this.renderer.listen('document', 'backbutton', e => {
      e.preventDefault();
      e.stopPropagation();
      return false;
  });
} 

答案 1 :(得分:0)

我设法解决了这个问题。这不是由Cordova或Angular引起的,而是由我用于输入组件的OnsenUI引起的。 默认情况下,它会覆盖后退按钮的所有cordova处理程序,因为它提供了自己的功能。您可以阅读更多here