javascript - ComponentRef.destroy() 方法是否也会取消订阅组件事件发射器?

标签 javascript angular typescript rxjs

如果我们有一个动态(动态创建 - 非声明式)ComponentRef 实例,并且我们在该实例上调用 destroy(),是否会取消对 的任何订阅已订阅的 >EventEmitter 实例。

例如,如果我们有一个 output EventEmitter 并且我们像这样订阅它:

this.componentRef.instance.output.subscribe(event => console.log(event));

我们调用 componentRef.destroy() 来取消对 output EventEmitter 的订阅?

包含答案的摘要文章

https://medium.com/@ole.ersoy/subscribing-to-dynamic-component-eventemitters-4f931a5013e3

https://medium.com/@ole.ersoy/cleaning-up-subscriptions-to-dynamic-component-event-emitters-ad08c838c7a8

最佳答案

当调用 subscribe 方法时,会返回一个订阅对象。如果我跟踪那个物体。每当 Angular 销毁组件时,您都必须可以调用取消订阅。

例如:

ngOnDestroy() {
   this.sub.unsubscribe();
}

它不会取消订阅 ngOnDestroy()

关于javascript - ComponentRef.destroy() 方法是否也会取消订阅组件事件发射器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54140421/

相关文章:

typescript - "No reducer provided for key X"console.error in redux jest 测试

Required 的 Angular 验证不起作用

javascript - React-native如何在文本输入上向上移动屏幕

javascript - 在选择/组合框中同时包含文本和 href 链接

html - 如何在到期日更改字体颜色?

Angular 2自定义表单验证不会阻止调用onSubmit

Angular 4.3 HttpClient 不发送授权 header

带有语言环境的 Javascript string.prototype.contains()

javascript - 我如何在整页 JS 中创建自动播放 slider

typescript - 如何以字符串作为参数调用Math.round?