angular / angular/angular

zone.js cause "Unable to preventDefault inside passive event listener invocation." "errors", if passive handler is added first

Open
#45,020 6 comments 6 reactions 1 assignee Claimed by @JiaLiPassion View on GitHub
area: zones P3
Dominant language
TypeScript
Stars
101k
Forks
27.5k
Avg merge
1d 19h
Merged PRs (30d)
288

Description

### Which @angular/* package(s) are the source of the bug?

Don't known / other

### Is this a regression?

No

### Description

There is issue with zone.js **addEventListener** patch. If you add listener with { passive: true } options first, same handler will be used for non-passive event listeners. As result calling event.preventDefault() causing error. Code example:

```
import 'zone.js';

document.addEventListener('mousemove', (ev) => {}, { passive: true });
document.addEventListener('mousemove', (ev) => {
ev.preventDefault(); // throws error
});
```

### Please provide a link to a minimal reproduction of the bug

Demo - https://js-dtyss2.stackblitz.io/
Code - https://stackblitz.com/edit/js-dtyss2

### Please provide the exception or error you saw

_No response_

### Please provide the environment you discovered this bug in (run `ng version`)

```
OS: win32 x64
Browser: Chrome 98

@zone.js 0.11.4
```

### Anything else?

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.