ionic 2 页面更改事件 [英] ionic 2 page change event

查看:16
本文介绍了ionic 2 页面更改事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在每次页面更改时执行一些代码.

I want to execute some code every time the page changes.

我可以为每个页面添加一个 ngOnDestroy 方法.看来我可以使用 Ionic 2 页面 生命周期挂钩(例如 ionViewDidUnload) 以获得完全相同的效果,但我没有费心去测试它.我宁愿在主应用程序类中添加一个方法.

I could add add an ngOnDestroy method to every page. It appears that I could use Ionic 2 page lifecycle hooks (e.g. ionViewDidUnload) for the exact same effect, but I haven't bothered to test that.I would rather add a single method to the main app class.

我发现您可以订阅 Angular 2 路由器事件.我如何翻译它以在 Ionic 2 中使用?我首先遇到了 import { Router } from '@angular/router; 的错误:

I see that you can subscribe to Angular 2 Router events. How do I translate that for use in Ionic 2? I'm getting an error with import { Router } from '@angular/router; in the first place:

TypeScript error: <path>/node_modules/@angular/router/src/common_router_providers.d.ts(9,55): Error TS2305: Module '"<path>/node_modules/@angular/core/index"' has no exported member 'NgModuleFactoryLoader'.
TypeScript error: <path>/node_modules/@angular/router/src/router.d.ts(14,39): Error TS2305: Module '"<path>/node_modules/@angular/core/index"' has no exported member 'NgModuleFactoryLoader'.
TypeScript error: <path>/node_modules/@angular/router/src/router_module.d.ts(9,10): Error TS2305: Module '"<path>/node_modules/@angular/core/index"' has no exported member 'ModuleWithProviders'.

webpack 配置

var path = require('path');


module.exports = {
  entry: [
    path.normalize('es6-shim/es6-shim.min'),
    'reflect-metadata',
    path.normalize('zone.js/dist/zone'),
    path.resolve('app/app.ts')
  ],
  output: {
    path: path.resolve('www/build/js'),
    filename: 'app.bundle.js',
    pathinfo: false // show module paths in the bundle, handy for debugging
  },
  module: {
    loaders: [
      {
        test: /.ts$/,
        loader: 'awesome-typescript',
        query: {
          doTypeCheck: true,
          resolveGlobs: false,
          externals: ['typings/browser.d.ts']
        },
        include: path.resolve('app'),
        exclude: /node_modules/
      }
    ],
    noParse: [
      /es6-shim/,
      /reflect-metadata/,
      /zone.js(/|\)dist(/|\)zone/
    ]
  },
  resolve: {
    alias: {
      'angular2': path.resolve('node_modules/angular2')
    },
    extensions: ["", ".js", ".ts"]
  }
};

无论如何,如果有办法使用 ionic-angular 的 NavNavController 服务,那对我来说会更有意义.有没有办法做到这一点?

It would make more sense to me anyways if there is a way to use the Nav or NavController service from ionic-angular. Is there a way to do that?

推荐答案

Ionic2 不使用 Angular2 的路由器.他们有自己的实现NavController.

Ionic2 doesn't use Angular2's Router. They have their own implementation NavController.

我看到您可以订阅 Angular 2 路由器事件.我如何翻译它以在 Ionic 2 中使用?

I see that you can subscribe to Angular 2 Router events. How do I translate that for use in Ionic 2?

您可以合并所有 NavController 事件并订阅它.

You can merge all the NavController Events and subscribe to it.

allEvents = Observable.merge(
                 this.navController.viewDidLoad, 
                 this.navController.viewWillEnter, 
                 this.navController.viewDidEnter, 
                 this.navController.viewWillLeave, 
                 this.navController.viewDidLeave, 
                 this.navController.viewWillUnload);

allEvents.subscribe((e) => {
    console.log(e);
});

这篇关于ionic 2 页面更改事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆