Angular 8 @HostListener('window:scroll',[])不起作用

时间:2019-12-02 23:35:20

标签: angular angular8 angular-directive

我尝试使用HostListener跟踪滚动位置以更改标题的颜色。

我的标头组件如下,

import { Component, OnInit, Input, HostListener, Inject } from '@angular/core';
import { DOCUMENT } from '@angular/common';

@Component({
  selector: 'app-header',
  templateUrl: './header.component.html',
  styleUrls: ['./header.component.scss']
})
export class HeaderComponent implements OnInit {

constructor(@Inject(DOCUMENT) private document: Document) { }

  ngOnInit() {
  }

  @HostListener('window:scroll', [])
  onWindowScroll() {
    console.log(window.scrollY);
  }

}

但是当我滚动时,控制台中没有任何日志。

我试图将HostListener放在主app.component中,因为我的标头组件已固定,但是我仍然没有结果,也没有错误。

谢谢

3 个答案:

答案 0 :(得分:3)

这是因为styles.scss中的全局样式

从styles.scss中将高度更改为最小高度

html, body {
    height: 100%;
}

对此

html, body {
    min-height: 100%;
}

这对我有用,希望对您有所帮助!

答案 1 :(得分:1)

在您正在使用的组件的.ts文件中:

import {Component, OnInit, HostListener, Inject} from '@angular/core';
import {DOCUMENT} from "@angular/common";

...
constructor(
    @Inject(DOCUMENT) private document: Document
)
... after ngOnIt {}:
@HostListener('window:scroll', [])
onWindowScroll() {
    console.log(window.scrollY);
}

确保文件足够长,并且向下滚动视口时应该在控制台中看到整数。

答案 2 :(得分:0)

请参考this链接来解决您的问题。希望这可以帮助! 谢谢。