Ionic 在使用菜单卸载时意外取消订阅事件



Background
一个带有菜单和两个页面(Homelist(的离子应用程序。

Home页面在ionViewWillEnter
上订阅事件,并在ionViewWillUnload上取消订阅。

正确情况:
使用Home和事件订阅启动应用。
如果切换菜单并单击ListHome,则事件已取消订阅。
重新输入Home并订阅事件。

错误情况:
应用程序以Home启动,事件已订阅。
切换菜单>单击Home>
控制台:
事件已
订阅事件已取消订阅

结果是页面上Home取消订阅的事件。

愿望情况
输入Home(从其他页面/从菜单重新输入(>订阅事件一次。
保留Home(到其他页面/从菜单重新加载同一页面(取消订阅事件一次。

游乐场
离子菜单

我希望输入和卸载是成对的。
如果重新进入同一页面,则应在进入之前运行卸载。
然而,事实并非如此。
请在离子
谢谢中提出一种正确(取消(订阅事件的方法。

import { Component, OnInit, OnDestroy } from '@angular/core';
import { NavController, Events } from 'ionic-angular';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage /*implements OnInit, OnDestroy*/ {
constructor(public navCtrl: NavController,
public events: Events) {}


ionViewWillEnter() {
console.log("ion enter info subscribed");
this.events.subscribe('get-info');
this.events.subscribe("value",(data) => {
console.log("ion enter info subscribed");
this.events.subscribe('get-info');
});
}
ionViewWillUnload() {
console.log("ion unload info unsubscribed");
this.events.publish('value',true)
this.events.unsubscribe('get-info');
}

最新更新