【发布时间】:2020-05-12 12:01:57
【问题描述】:
我正在尝试为我的一些使用 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 方法正在调用服务中的某个函数(从后端获取数据)并更新局部变量。 将相同的服务注入所有组件,并且所有组件都可以使用相同的变量。 事实上 - 逻辑是精确的并且在所有这些组件中重复。
我想做的是找到一种方法来创建一个自定义装饰器,它将包装重复的HostListener,例如:
@Component({...})
@WithScrollHostListener()
export class MySearchComponent implements OnInit, OnDestroy {
}
如果需要,我将为这些组件创建一个接口,以声明装饰器使用的公共服务和局部变量。
关于如何实现这种装饰器的任何想法、指导或帮助?
提前致谢。
【问题讨论】:
标签: angular typescript decorator