angular - 订阅的生命周期
问题描述
所以,我有一个像
class DialogLoginComponent {
constructor(
private dialogRef: MatDialogRef<DialogLoginComponent>,
private store: Store<Auth.State>
) {}
onDoSomething(): void {
this.dialogRef.close();
this.dialogRef.afterClosed().subscribe(() =>
this.store.dispatch(new RegistrationActions.OpenRegistrationDialog())
);
}
}
问题是,一旦组件被销毁,订阅是否仍然有效,或者 Angular / RxJS 是否足够智能以自动取消订阅?
解决方案
不,订阅仍然有效,除非您:
- 在unsubscribe()
某处取消订阅,可能在 ngDestroy 中?但这不推荐,请参阅https://medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87。
- 使用first()
ortake(1)
这样您将确保订阅将完成并且在获得第一个结果后不会继续存在
推荐阅读
- javascript - 在浏览器搜索中显示引导模式链接
- kubernetes - 是否可以为虚拟服务中的路由目的地设置后备?
- python - 通过源使用 reticulate 时没有名为“rpytools”的模块
- google-slides-api - 如何通过 Slides API 更改 Google 幻灯片演示主题?
- javascript - 在同一个项目中加载多个 jquery 版本但不同的页面
- c# - C# - 通用方法不能使用对象的字段
- android - 为什么我发布的游戏的分辨率低于原始版本?
- eclipse - 线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException:无法调用“java.net.URL.toExternalForm()”,因为“位置”为空
- angular - 物料表 - 无法正确实施
- vba - VBA Microsoft Project Professional 2016:如何按日期按资源按任务阅读实际时间和工作(小时)?