Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 订阅和取消订阅在离子2中不起作用_Angular_Typescript_Ionic2 - Fatal编程技术网

Angular 订阅和取消订阅在离子2中不起作用

Angular 订阅和取消订阅在离子2中不起作用,angular,typescript,ionic2,Angular,Typescript,Ionic2,我注意到,每次我在堆栈中推一个页面时,它都会调用ionViewloaded,我添加subscribe()我的问题是,当我弹出页面时,我无法取消订阅。这是我的密码。它不起作用 ionViewDidLoad() { this.user = this.navParams.data; this.events.subscribe('close:userPopOver', this.onRemovePopOver.bind(this)); } ionViewWillLeave() {

我注意到,每次我在堆栈中推一个页面时,它都会调用
ionViewloaded
,我添加
subscribe()
我的问题是,当我弹出页面时,我无法取消订阅。这是我的密码。它不起作用

ionViewDidLoad() {
    this.user = this.navParams.data;
    this.events.subscribe('close:userPopOver', this.onRemovePopOver.bind(this));
}

ionViewWillLeave() {
    alert('FIRES!!');
    this.events.unsubscribe('close:userPopOver', this.onRemovePopOver.bind(this));
}

这两个答案都无法实现,因为typescript并没有识别传递给订阅实例的void值以使其工作
this.events.unsubscribe('close:userPopOver',null)


订阅是否来自rxjs/Rx?我得到一个警告类型void,不能从“rxjs/Subscription”分配给类型“Subscription”
import{Subscription}
this.events.subscribe()返回void无法分配给订阅您订阅的是
void
?不,这是错误的。它应该返回
Observable
,否则您无法订阅它。虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的附加上下文将提高答案的长期价值。
private sub : Subscription;

ionViewDidLoad() {
    this.user = this.navParams.data;
    this.sub = this.events.subscribe('close:userPopOver', this.onRemovePopOver.bind(this) );
 }

ionViewWillLeave(){
    alert('FIRES!!');
    this.sub.unsubscribe();
 }