Angular 角度8:如何将单击事件发送到特定坐标

Angular 角度8:如何将单击事件发送到特定坐标,angular,typescript,unit-testing,Angular,Typescript,Unit Testing,我想知道如何将点击事件发送到屏幕上的特定坐标,例如,角度的像素(700700) 我搜索了这个问题,找到了纯javascript的解决方案,在纯javascript中可以使用document元素,但在angular 8中不能这样做 我最初的问题是: 我有一个div元素,它有一个click事件,click事件的回调检查它是否点击了特定区域,如果点击了,它将最小化div。 因此,我想编写一个单元测试,并向该div发送click事件 我该怎么做? 提前谢谢 如果div上有(单击)事件,则将其添加到组件以

我想知道如何将点击事件发送到屏幕上的特定坐标,例如,角度的像素(700700)

我搜索了这个问题,找到了纯javascript的解决方案,在纯javascript中可以使用document元素,但在angular 8中不能这样做

我最初的问题是: 我有一个div元素,它有一个click事件,click事件的回调检查它是否点击了特定区域,如果点击了,它将最小化div。 因此,我想编写一个单元测试,并向该div发送click事件

我该怎么做? 提前谢谢

如果div上有
(单击)
事件,则将其添加到组件以获取坐标:

onClickEvent(event: MouseEvent) {
  const x = event.offsetX,
  const y = event.offsetY
}

我希望我能正确地理解你

如果你想开火,点击spesific div,你可以使用
@ViewChild('YOUR_DIV_ID',{static:true})DIV

然后,在测试中,您可以触发一个click事件-
div.nativeElement.click()
,因此它对我有效:

在我的单元测试中:

let section = fixture.debugElement.queryAll(By.css('.data-wrapper'))[0];
const mouseDblEvent = new MouseEvent('dblclick', <MouseEventInit>{ clientX: 700, clientY: 700 }) ;

section.nativeElement.dispatchEvent(mouseDblEvent);
fixture.detectChanges();
let section=fixture.debugElement.queryAll(By.css('.data wrapper'))[0];
const mouseDblEvent=newmouseevent('dblclick',{clientX:700,clientY:700});
节.nativeElement.dispatchEvent(mouseDblEvent);
fixture.detectChanges();

这里的主要思想是使用initail参数创建MouseEvent

听起来像是因为坐标可以在响应应用程序上改变。如果点击通过角度绑定到一个函数,那么在没有点击事件的情况下该函数不能测试吗?@fingeron事件处理程序正在检查事件…OP知道如何获取坐标,他们问如何在特定坐标处假装点击询问您的答案,但我很抱歉,这不是我的意思。我的意思是,你在div上发起了一个点击事件,太好了。但是你如何使点击成为像素(700700)?比如“在像素(x,y)上创建一个点击事件”。这与我有关…也许你可以使用
document.elementFromPoint(700700)
如果元素存在,就会触发事件?我认为在角度上使用document对象是有问题的。我认为我们只需要在纯javascript中使用它。我终于为angular找到了一些东西,它只需创建一个带有初始参数的MouseeEvent对象:)