订阅的生命周期

时间:2018-10-05 09:22:32

标签: angular rxjs

所以,我有一个类似

的组件
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足够智能以自动取消订阅?

1 个答案:

答案 0 :(得分:0)

否,除非您执行以下操作,否则订阅仍然有效:
-可以在ngDestroy的某个地方unsubscribe()取消订阅吗?但是不建议这样做,请参见https://medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87
-使用first()take(1),这样您将确保订阅将完成,并且在获得第一个结果后不会继续播放