angular - 如何取消订阅 Angular 2 中的 EventEmitter?

标签 angular rxjs eventemitter

export declare class EventEmitter<T> extends Subject<T> {
    /**
     * Creates an instance of [EventEmitter], which depending on [isAsync],
     * delivers events synchronously or asynchronously.
     */
    constructor(isAsync?: boolean);
    emit(value: T): void;
    /**
     * @deprecated - use .emit(value) instead
     */
    next(value: any): void;
    subscribe(generatorOrNext?: any, error?: any, complete?: any): any;
}

在官方 Angular 2 Typescript 定义中,似乎无法静音或取消订阅 EventEmitter。

随着页面使用相同的 EventEmitter,我会随着时间的推移得到回调

最佳答案

EventEmitter 扩展了 Subject。当您订阅一个主题时,您会得到一个 Subscription,稍后您可以使用它来取消订阅。

someOutput:EventEmitter = new EventEmitter();
...
this.subscription = someOutput.subscribe(...);
...
this.subscription.unsubscribe();

提示
不要将 EventEmitter 用于除 @Output() 以外的任何其他用途。 Angular 不保证 EventEmitter 将继续扩展 Subject 或什至在未来以类似于 Subject 的方式工作。

关于angular - 如何取消订阅 Angular 2 中的 EventEmitter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36494509/

相关文章:

node.js - 安装node-sass文件后出现错误

angular - 通过formControlName添加CSS类

node.js - 未捕获的TypeError : Cannot set property 'rowsdata' of undefined

javascript - rxjs 订阅 onerror 绑定(bind)

javascript - RxJS - future 的插入不可观察?

javascript - 将全局变量传递给 Javascript 中的事件回调函数?

angular - Ionic2 最多需要 30 秒才能加载应用程序

rxjs - MergeMap 来自 Observables 数组

javascript - 我可以使用 this.on 来监听 EventEmitter 中的事件吗?在 javascript 类中寻找 Eventmitter 的正确用法

java - SSE 发射器 : Manage timeouts and complete()