NativeScript处理后退按钮事件

krv*_*krv 5 back-button nativescript angular2-nativescript

我正在尝试处理NativeScript应用程序中的硬件后退按钮.我正在使用带有Angular的NativeScript版本2.3.0.

这是我在main.ts档案中的内容

// this import should be first in order to load some required settings (like globals and reflect-metadata)
import { platformNativeScriptDynamic, NativeScriptModule } from "nativescript-angular/platform";
import { NgModule,Component,enableProdMode } from "@angular/core";
import { AppComponent } from "./app.component";
import { NativeScriptRouterModule } from "nativescript-angular/router";
import { routes, navigatableComponents } from "./app.routing";
import { secondComponent } from "./second.component";
import {AndroidApplication} from "application";
@Component({
    selector: 'page-navigation-test',
    template: `<page-router-outlet></page-router-outlet>`
})
export class PageNavigationApp {
}
@NgModule({
    declarations: [AppComponent,PageNavigationApp,secondComponent
        // ...navigatableComponents
        ],
    bootstrap: [PageNavigationApp],
    providers:[AndroidApplication],
    imports: [NativeScriptModule,
        NativeScriptRouterModule,
    NativeScriptRouterModule.forRoot(routes)
    ],
})
class AppComponentModule {

    constructor(private androidapplication:AndroidApplication){
        this.androidapplication.on("activityBackPressed",()=>{
            console.log("back pressed");

        })
    }

}

enableProdMode();

platformNativeScriptDynamic().bootstrapModule(AppComponentModule);
Run Code Online (Sandbox Code Playgroud)

我正在导入应用程序

import {AndroidApplication} from "application";

然后在appComponentModule我正在注册事件的constructor中activityBackPressed,只是做一个console.log.

这不起作用.

我在这里错过了什么?

Edd*_*gen 25

我也使用带有Angular的NativeScript,这似乎对我来说非常好用:

import { RouterExtensions } from "nativescript-angular";
import * as application from "tns-core-modules/application";
import { AndroidApplication, AndroidActivityBackPressedEventData } from "tns-core-modules/application";
import { isAndroid } from "tns-core-modules/platform";

export class HomeComponent implements OnInit {
  constructor(private router: Router) {}

  ngOnInit() {
    if (!isAndroid) {
      return;
    }
    application.android.on(AndroidApplication.activityBackPressedEvent, (data: AndroidActivityBackPressedEventData) => {
      if (this.router.isActive("/articles", false)) {
        data.cancel = true; // prevents default back button behavior
        this.logout();
      }
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,挂钩到backPressedEvent是一个全局的东西,所以你需要检查你所在的页面并按照上面的例子采取相应的行动.