我已经设置了一个RXJS可观察对象。我有两个组件订阅服务工厂的主题。如何取消订阅所选组件到主题,以便按下按钮停止收听主题广播?
请参阅我的jsfiddle Unsubscribe App
我的代码:
Try
答案 0 :(得分:14)
根据我上面的评论,新的RxJs 5 Beta现已从subscription.dispose()
更改为subscription.unsubscribe()
请参阅此处https://github.com/ReactiveX/rxjs/blob/master/MIGRATION.md#subscription-dispose-is-now-unsubscribe
答案 1 :(得分:7)
请参阅更新的小提琴:here
subscribe
函数返回Disposable
以供使用,您必须先从工厂返回订阅(第60行):
subscribe: function(subscription){
return msgSubject.subscribe(subscription);
}
这将允许您将订阅存储在每个控制器中,以便将来使用。 (第21和42行)
var boxASubscription = boxA.msgService.subscribe(function(obj) {
console.log('Listerner A');
boxA.msg = obj;
});
您可以在取消订阅时调用订阅上的dispose
方法:
boxA.unsubscribe = function(){
console.log('Unsubscribe A');
boxASubscription.dispose();
};
n.b。
出于某种原因,我无法让您的演示版与<md-button>
一起使用,所以为了演示,我将其更改为<button>
。