javascript - 在窗口滚动时更改 Angular 2 中的组件样式?

标签 javascript jquery css angular

在窗口滚动时,如何捕获滚动值并更改 Angular 2 中 DOM 中组件之一的位置? 我发现可以使用@HostListener,但它对我不起作用,我正在使用以下代码:

   import { Component, OnInit, HostListener } from '@angular/core';

@Component({
  selector: 'app-submenu',
  templateUrl: './submenu.component.html',
  styleUrls: ['./submenu.component.scss'],
  inputs : ['menuItems']
})
export class SubmenuComponent implements OnInit {
  public menuItems;
  constructor() { }

  ngOnInit() {
  }

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

在 Angular 2 中捕获诸如滚动、调整大小等 dom 事件的最佳方法是什么?

最佳答案

您已经在使用一种好方法:@HoSTListener。为了让它工作,最好写一个添加监听器的指令。

import { Directive, ElementRef, HostListener } from '@angular/core';

@Directive({ selector: '[scroll]' })
export class TrackScrollDirective {

   constructor(private el: ElementRef) {
   }
   @HostListener('document:scroll', []){
   onScroll(): void {
     this.el.nativeElement.setAttribute('style','position:fixed')
   }
}

确保元素有overflow:scroll

关于javascript - 在窗口滚动时更改 Angular 2 中的组件样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45318828/

相关文章:

javascript - 三元运算符返回 "true : false"。为什么?

Javascript - 在每次按键时从文本框中获取值

jquery - 如何使用 jqm.page.params.js 插件?

html - 将不同的 css 类属性应用于 div

jquery - 通过 Python 脚本编写包含 jQuery 和 CSS 的 HTML 格式的电子邮件。

javascript - 使用 Jquery onclick 添加边框底部

javascript - 如何使用 Ajax 和 Servlet 上传文件

javascript - 如何从嵌入的内容 Angular 4共享数据

javascript - 将点击监听器添加到自定义按钮在 Angular 数据表中不起作用

javascript - 如何创建覆盖移动菜单?