我有一组元素,我想在其中注册一个事件处理程序。我尝试在如下模板中的每个元素上注册事件处理程序,尽管性能不够,并且当长度myLabels
很大(> 1000)时我会错过一些这些事件
在里面.html
<template ngFor let-row [ngForOf]=myLabels>
<div #cell (mouseenter)=onMouseEnter($event)>...</div>
</template>
在里面.component.ts
...
OnMouseEnter(event) {
console.log('mouse entered')
}
相反,我想将这些事件注册为Observable
流。
在我的.component.ts
;
export class MyComponent {
@ViewChildren('cell') cells: ElementRef;
public mouseMoves$: Observable<MouseEvent>;
...
onFrameLoad(): void {
this.mouseMoves$ = Observable.fromEvent(this.cells.nativeElement, 'mousemove');
}
}
虽然这不起作用,因为this.cells
它是一个QueryList
. 使用QueryList.toArray()
,我得到一个数组,我可以在其中访问每个nativeElement
喜欢QueryList.toArray()[n].nativeElement
我将如何为中的每个元素设置一个事件的 Observable cells
?