Я пытаюсь найти способ сделать многоразовый декоратор для некоторых из моих компонентов, использующих HostListener.
В настоящее время у меня есть несколько функций (компонентов), которые очень похожи и имеют тот же блок @HostListener:
@Component({...})
export class MySearchComponent implements OnInit, OnDestroy {
@HostListener('window:scroll', [])
onScroll(): void {
this.loading = true;
this.commonService.getData(
this.tab,
this.query,
...
).subscribe(results => {
this.results = results;
this.loading = false;
})
}
}
Метод HostListener вызывает некоторую функцию в службе (для получения данных из серверной части) и обновляет локальные переменные. Один и тот же сервис внедряется во все компоненты, и во всех них доступны одни и те же переменные. Infact - logi c является EXACT и повторяется во всех этих компонентах.
Я хотел бы найти способ создать собственный декоратор, который будет оборачивать повторяющийся HostListener, такой как:
@Component({...})
@WithScrollHostListener()
export class MySearchComponent implements OnInit, OnDestroy {
}
При необходимости я создам интерфейс для этих компонентов для объявления общей службы и локальной переменной, которая будет использоваться декоратором.
Любая идея, руководство или помощь в отношении того, как реализовать такой декоратор?
Заранее спасибо.