Принятие этого способа имеет как минимум одно огромное преимущество - вы перемещаете этот код за пределы логики своего приложения. Я думаю, что это главное преимущество. Потому что отписаться это просто уборка. Это не связано с логикой, которую вы создаете в своем приложении. Как в вашем доме, вы не оставляете уборочное оборудование в комнате (@Component
). Вы кладете это в закрытое, чтобы вас это не беспокоило.
И, продвигаясь на один шаг вперед, вы можете опустить ngOnDestroy
в компонентах, создать один адаптер с NgOnDestroy
и разместить всю логику там (теперь ваше уборочное оборудование размещается только в одной комнате (@Component
). теперь беспокоит еще меньше.
import { OnDestroy } from '@angular/core';
import { SubSink } from './sub-sink';
/**
* A class that automatically unsubscribes all observables when
* the object gets destroyed
*/
export class UnsubscribeOnDestroyAdapter implements OnDestroy {
/**The subscription sink object that stores all subscriptions */
subs = new SubSink();
/**
* The lifecycle hook that unsubscribes all subscriptions
* when the component / object gets destroyed
*/
ngOnDestroy(): void {
this.subs.unsubscribe();
}
Как автоматически отписаться от ваших наблюдаемых RxJs
Кроме этого, это очень маленький пакет, всего несколько строк кода. Спасибо, что поделились :) Я обязательно буду им пользоваться.