如何手动触发事件并进行更改检测?

时间:2018-05-25 20:46:43

标签: angular testing angular-changedetection

当我拖动组件的根元素时,假设组件中存在拖动侦听器,例如:

@HostListener('drag', ['event'])
onDrag(e) { ... }

每次事件发生时,更改检测也会发生,因为事件是异步操作。

但是,当手动触发拖动事件时,我似乎无法进行更改检测。

let event = new Event('drag');
fixture.nativeElement.dispatchEvent(event);

这将调用拖动侦听器,但不会触发更改检测。

为了清楚起见,我知道我可以手动触发事件,然后手动调用detectChanges(),但我希望事件触发更改检测,就像在现实生活中一样。

1 个答案:

答案 0 :(得分:0)

我错了,fixture.nativeElement.dispatchEvent(event);确实触发了变更检测。在监视component.ngZone.run时可以很容易地看到这一点。