您需要的是Directive,它可以将那些鼠标wheel up event/ mouse wheel down 事件值捕获到您的控制器中。
HTML:
<h1>Wheel Directive Demo
<div wheel style="height:1000px;background-color:green">
<input type="text" value=""/>
SCROLL MOUSE
</div>
打字稿:
按名称创建新指令wheel.directive.ts
import { Directive, HostListener, Renderer, ElementRef } from '@angular/core';
@Directive({
selector: '[wheel]'
})
export class WheelDirective {
i: number = 1;
constructor(
private renderer: Renderer,
private el: ElementRef
) { }
@HostListener('mousewheel', ['$event']) onMousewheel(event) {
if (event.wheelDelta > 0) {
event.srcElement.style.setProperty('transition', 'all 200ms ease-in')
event.srcElement.style.setProperty('transform', "scale(" + this.i + 1 + ")")
}
if (event.wheelDelta < 0) {
event.srcElement.style.setProperty('transition', 'all 200ms ease-out')
event.srcElement.style.setProperty('transform', +"scale(" + this.i - 1 + ")")
}
}
}
在 AppModule.ts 中:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { HelloComponent } from './hello.component';
import { WheelDirective } from './wheel.directive'
@NgModule({
imports: [BrowserModule, FormsModule],
declarations: [AppComponent, HelloComponent, WheelDirective],
bootstrap: [AppComponent]
})
export class AppModule { }
请找到有效的 StackBlitz 示例 here。