diff --git a/adev/src/content/reference/errors/NG05102.md b/adev/src/content/reference/errors/NG05102.md
new file mode 100644
index 000000000000..b4f1fc0660c8
--- /dev/null
+++ b/adev/src/content/reference/errors/NG05102.md
@@ -0,0 +1,44 @@
+# Unsupported event target
+
+Angular only recognizes three string values as global event targets: `'window'`, `'document'`, and `'body'`. If you pass anything else as a string target when registering a global event listener, Angular can't resolve it and throws this error.
+
+## Debugging the error
+
+Check for a typo in the target name used with `@HostListener` or `Renderer2.listen()`. A small mistake like `'windw'` instead of `'window'` is enough to trigger this:
+
+```angular-ts
+@Component({
+ selector: 'app-example',
+ template: '',
+})
+export class ExampleComponent {
+ @HostListener('windw:resize') // typo — should be 'window'
+ onResize() {}
+}
+```
+
+The same applies when calling `Renderer2.listen()` directly with a string that Angular doesn't know about:
+
+```typescript
+this.renderer.listen('global', 'click', handler); // 'global' is not supported
+```
+
+## Fixing the error
+
+Correct the target to one of the three supported strings, or pass an actual DOM element instead of a string:
+
+```angular-ts
+@Component({
+ selector: 'app-example',
+ template: '',
+})
+export class ExampleComponent {
+ @HostListener('window:resize')
+ onResize() {}
+}
+```
+
+```typescript
+// Use an element reference when you need to target something more specific
+this.renderer.listen(this.elementRef.nativeElement, 'click', handler);
+```
diff --git a/goldens/public-api/platform-browser/errors.api.md b/goldens/public-api/platform-browser/errors.api.md
index ead51d7ea4fe..7e3b74437a69 100644
--- a/goldens/public-api/platform-browser/errors.api.md
+++ b/goldens/public-api/platform-browser/errors.api.md
@@ -27,7 +27,7 @@ export const enum RuntimeErrorCode {
// (undocumented)
UNEXPECTED_SYNTHETIC_PROPERTY = 5105,
// (undocumented)
- UNSUPPORTED_EVENT_TARGET = 5102,
+ UNSUPPORTED_EVENT_TARGET = -5102,
// (undocumented)
UNSUPPORTED_ZONEJS_INSTANCE = -5000
}
diff --git a/packages/platform-browser/src/errors.ts b/packages/platform-browser/src/errors.ts
index 432b6382594b..ad779489f0be 100644
--- a/packages/platform-browser/src/errors.ts
+++ b/packages/platform-browser/src/errors.ts
@@ -17,7 +17,7 @@ export const enum RuntimeErrorCode {
// misc errors (5100-5200 range)
BROWSER_MODULE_ALREADY_LOADED = 5100,
NO_PLUGIN_FOR_EVENT = 5101,
- UNSUPPORTED_EVENT_TARGET = 5102,
+ UNSUPPORTED_EVENT_TARGET = -5102,
TESTABILITY_NOT_FOUND = 5103,
ROOT_NODE_NOT_FOUND = -5104,
UNEXPECTED_SYNTHETIC_PROPERTY = 5105,