所以,我有一个类似
的组件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足够智能以自动取消订阅?
答案 0 :(得分:0)
否,除非您执行以下操作,否则订阅仍然有效:
-可以在ngDestroy的某个地方unsubscribe()
取消订阅吗?但是不建议这样做,请参见https://medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87。
-使用first()
或take(1)
,这样您将确保订阅将完成,并且在获得第一个结果后不会继续播放