Javascript 在非InputElement上调用Angular2 click事件

Javascript 在非InputElement上调用Angular2 click事件,javascript,html,angular,typescript,Javascript,Html,Angular,Typescript,我正在测试一个在div上有点击输入的组件 <div (click)="handleClick(someArgs)"></div> 但是,这只适用于特定的浏览器,因为。click()似乎只为HTMLInputElements()定义。我发现以下错误“undefined”不是一个函数(计算elem.nativeElement.click())对于一些浏览器 在非HTMLInputElement上调用click事件的最佳方法是什么?我认为最好的方法是在DebugElement

我正在测试一个在div上有点击输入的组件

<div (click)="handleClick(someArgs)"></div>
但是,这只适用于特定的浏览器,因为
。click()
似乎只为HTMLInputElements()定义。我发现以下错误
“undefined”不是一个函数(计算elem.nativeElement.click())
对于一些浏览器


在非HTMLInputElement上调用click事件的最佳方法是什么?

我认为最好的方法是在
DebugElement上调用
triggerEventHandler()

triggerEventHandler

如果事件中有相应的侦听器,则按其名称触发事件 元素的侦听器集合。第二个参数是事件 处理程序所需的对象

如果事件缺少听者或有其他问题,请考虑 调用nativeElement.dispatchEvent(eventObject)

来自测试文档


通常,当您想要使用纯js触发单击html元素时,必须调用元素上定义的事件

更新:如果您正在使用Jasmine,您可以尝试调用元素上的
trigger

const elem = fixture.debugElement.query(By.css('my-selector'));
elem.nativeElement.click();
// Check for desired changes
const elem = fixture.debugElement.query(By.css('my-selector'));
elem.nativeElement.trigger('click');

在哪些浏览器中会出现此错误?请说明我使用PhantomJS 1.9(但不使用2.1)时遇到了这个问题,只是测试了它,似乎不起作用,但是更新工作正常@yurzuiThis使用PhantomJS 1.9.1和TypeScript时不起作用:
TypeError:“undefined不是一个函数(计算elem.nativeElement.trigger('click'))”
。调用
elem.triggerEventHandler('click',null)
成功了。