Angular 如何使用@HostListener检测滚动条是否存在

Angular 如何使用@HostListener检测滚动条是否存在,angular,typescript,Angular,Typescript,我见过@HostListner以不同元素和事件为目标的例子,我甚至见过一个人在用户滚动时监听。这些例子是这样的 @HostListener('window:scroll', [$event]) scrollFunction(event){/*do stuff*/}; 到目前为止,我想做的是这样的 @HostListener('???:???', [$event]) scrollXCheck(event){ if(window.innerWidth > document.scrol

我见过
@HostListner
以不同元素和事件为目标的例子,我甚至见过一个人在用户滚动时监听。这些例子是这样的

@HostListener('window:scroll', [$event]) scrollFunction(event){/*do stuff*/};
到目前为止,我想做的是这样的

@HostListener('???:???', [$event]) scrollXCheck(event){
    if(window.innerWidth > document.scrollWidth){/*do stuff*/};
}

问题是,我不知道如何找出应该用什么来代替
:?
部分。我更深入地研究了
@HostListener
的语法,没有看到太多的细节,因为您几乎可以调用任何想要的元素或属性。有人可以帮忙吗?

您可以收听
onload
事件,然后执行以下操作:

@HostListener('window:onload', [$event]) hasScrollbar(event){
    if(window.innerWidth > document.documentElement.clientWidth){
        // Do stuff
    };
}
另一种监听事件的方法是使用可观察的
。fromEvent
方法,这将在
订阅
映射
等方面为您提供对事件的更多控制。这类似于:

ngOnInit() {
  Observable.fromEvent(window, 'onload').subscribe((event: any) => {
        if (window.innerWidth > document.documentElement.clientWidth) {
            // Do stuff
        }
    });
}

两者都会产生相似的结果,我只是想把它作为洞察

可能是
窗口:onload
?您可以添加目标浏览器支持的任何javascript事件。