Я знаком с шаблонами, которые используются для очистки подписок на наблюдаемых, как описано здесь: Angular / RxJs Когда мне следует отписаться от Subscription
НоЕсть ли подобный шаблон для очистки обработчиков событий?
У меня есть компонент, который модифицирует динамически предоставленный шаблон для применения некоторых обработчиков событий к различным элементам, среди прочего. Существуют и очищаются другие подписки, используя ngrx-take-until-destroy
, что упрощает все. В настоящее время я просто поддерживаю отдельный массив Unsubscribable
для сбора и очистки после уничтожения.
@Component(...)
class MyComponent implements OnInit, OnDestroy {
constructor(private renderer: Renderer2, private service: SomeService) {}
private subscriptions: Unsubscribable[] = [];
ngOnInit() {
this.service.doSomething(...).pipe(
untilDestroyed(this)
).subscribe(...);
}
private setTagLink(
element: Element,
clickHandler: (event: any) => (boolean|void)
) {
this.subscriptions.push({
unsubscribe: this.renderer.listen(element, 'click', clickHandler)
});
}
ngOnDestroy() {
this.subscriptions.forEach(s => s.unsubscribe());
}
}
Я бы предпочел не поддерживать этот массив и аналогичным образом иметь некоторую автоматическую очистку слушателей. ,Какие у меня варианты?