Как вручную вызвать событие и сделать обнаружение изменений? - PullRequest
0 голосов
/ 25 мая 2018

Когда я перетаскиваю корневой элемент компонента, предполагая, что в компоненте присутствует прослушиватель перетаскивания, например:

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

Каждый раз, когда происходит событие, происходит обнаружение изменений, потому что событиеявляется асинхронной операцией.

Тем не менее, при ручном запуске события перетаскивания я не могу обнаружить обнаружение изменений.

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

Это вызовет прослушиватель перетаскивания, ноне будет инициировать обнаружение изменений.

Просто чтобы прояснить ситуацию, я знаю, что могу инициировать событие вручную, а затем вручную вызвать detectChanges(), но я бы хотел, чтобы событие инициировало обнаружение изменений, как в реальном сценарии..

1 Ответ

0 голосов
/ 31 мая 2018

Я был не прав, fixture.nativeElement.dispatchEvent(event); вызывает обнаружение изменений.Это легко увидеть при шпионаже component.ngZone.run.

...