我一直在尝试为角度2应用程序执行一个测试,点击一个提交按钮调用函数。我通常使用两种方法来执行相同的操作。nativeElement.click()和事件处理程序的点击之间有什么区别?
element.nativeElement.click()
和
element.triggerEventHandler('click',null);
我认为这两种方法都是一样的,直到我碰到这种情况下触发事件处理方法不起作用来了。
element = fixture.debugElement.query(By.css('.dropList li'));
element.triggerEventHandler('click',null); //Click event works here
fixture.detectChanges();
let button = fixture.debugElement.query(By.css('button'));
//button.triggerEventHandler('click',null); //Does not call function
button.nativeElement.click(); //Calls function
fixture.detectChanges();
模板供你参考:
<form (ngSubmit)="printSelection()">
<div class="dropList">
<ul>
<li *ngFor="let element of data.elements" (click)="selectElement(element)"> </li>
</ul>
</div>
<button type="submit">Submit</button>
</form>
那么,有没有这两种方法有什么区别或者你认为我可以在我的代码出了问题的地方?
你可以添加组件的模板吗? – yurzui
@yurzui添加了模板... – SanjuAus
谢谢。模板中的“按钮”在哪里? – yurzui