我有一个自定义指令,使用 HostListener 来检测鼠标何时进入列表元素,并使用 HostBinding 来更改元素的背景颜色。
@HostBinding('style.backgroundColor') backgroundColor: string;
@HostListener('mouseenter') mouseOver(eventData: Event) {
this.backgroundColor = this.altColor;
}
放置此指令的元素是“设备”列表。当点击一个设备时,会发出一个事件来通知其他组件,这些组件使用所选设备列出属于该设备的一系列传感器。
onSelect(device: Device) {
console.log('Device Chosen -> ' + device.name);
this.deviceService.selectedDevice.emit(device);
}
<mat-grid-tile
*ngFor="let sensor of selectedDevice.sensors"
(click)="onSelect(sensor)"
<img src={{getImage(sensor.name)}} alt="" width=50%>
<p> {{sensor.name}} </p>
</mat-grid-tile>
该功能工作正常。但是,我注意到当我在 getImage 函数(在 ngFor 循环期间使用)中放置一个 console.log 时,每次鼠标进入(或离开)应用指令的元素时都会调用该函数。即,当 HostListener 被触发时,传感器列表被重新加载?
使用组件的 ngOnChanges 没有获取任何内容。如果我删除指令,这种行为就会停止。当我与 ngx 图表交互以及图表进入动画时,也会发生相同的行为。