【问题标题】:scrollIntoView does not trigger mousewheel nor scroll event in AngularscrollIntoView 不会在 Angular 中触发鼠标滚轮或滚动事件
【发布时间】:2020-11-08 22:57:07
【问题描述】:

我使用 Angular 并注册了 mousewheelscroll 事件。当我使用scrollIntoView 时,不会触发此事件。还有其他我想念的活动吗?

  @HostListener('mousewheel', ['$event'])
  mousewheel(event: MouseEvent) {
    console.log("mousewheel");
  }

  @HostListener('scroll', ['$event'])
  scroll(event: MouseEvent) {
    console.log("scroll");
  }

我使用这个函数:

element.scrollIntoView({behavior: 'smooth'});

有人知道我在这里想念什么吗?

【问题讨论】:

    标签: javascript angular events event-handling


    【解决方案1】:

    您始终可以使用 addEventListener 来添加滚动功能。另外,不要忘记在 ngOnDestroy 中将其删除这是一个示例:

    export class WindowScrollDirective implements OnInit, OnDestroy{
    
     ngOnInit() {
        window.addEventListener('scroll', this.handleScroll, true); 
     }
    
     ngOnDestroy() {
         window.removeEventListener('scroll', this.handleScroll, true);
     }
    
     handleScroll = (event): void => {
       //handle your scroll here
       
     };
    }
    

    注意:您可以将 window 对象替换为要用于滚动的元素。

    【讨论】:

    • 非常感谢!我会试试的。所以我需要注册这两个事件? mousewheelscroll?
    • 不客气。如果这对您有帮助,请不要忘记接受这个作为正确答案:)。谢谢
    • @DanielStephens 你不再需要使用鼠标滚轮了。只需将滚动事件添加到您的元素,您应该会很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    相关资源
    最近更新 更多