Итак, у меня есть такой компонент, как
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() или take(1), чтобы вы были уверены, что подписка будет завершена и не останется активной после получения первого результата
как насчет использования обратного вызова для уничтожения жизненного цикла в DialogLoginComponent?