From 14c497481ddc6be17d1f6d523525b62dbb512c7d Mon Sep 17 00:00:00 2001 From: arturovt Date: Mon, 22 Jun 2026 20:43:22 +0300 Subject: [PATCH] docs: add error guide for NG05101 Adds a new error reference page for NG05101 (NO_PLUGIN_FOR_EVENT), which is thrown when no registered EventManagerPlugin supports the event name passed to addEventListener. The page covers the two common causes: a typo in the event binding and a missing plugin provider. --- adev/src/content/reference/errors/NG05101.md | 26 +++++++++++++++++++ .../public-api/platform-browser/errors.api.md | 2 +- packages/platform-browser/src/errors.ts | 2 +- .../test/dom/events/event_manager_spec.ts | 2 +- 4 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 adev/src/content/reference/errors/NG05101.md diff --git a/adev/src/content/reference/errors/NG05101.md b/adev/src/content/reference/errors/NG05101.md new file mode 100644 index 000000000000..1459c4ecb4b8 --- /dev/null +++ b/adev/src/content/reference/errors/NG05101.md @@ -0,0 +1,26 @@ +# No event manager plugin found for event + +This error occurs when Angular tries to set up a listener for an event but none of the registered event manager plugins recognizes the event name. + +## Debugging the error + +The error message includes the unrecognized event name, which is usually enough to spot the problem. The most common cause is a typo in the event binding: + +```html + + + + + +``` + +If the event name is intentional and belongs to a third-party plugin (for example, a Hammer.js gesture event), make sure the plugin is provided via the `EVENT_MANAGER_PLUGINS` token: + +```typescript +import {ApplicationConfig} from '@angular/core'; +import {EVENT_MANAGER_PLUGINS} from '@angular/platform-browser'; + +export const appConfig: ApplicationConfig = { + providers: [{provide: EVENT_MANAGER_PLUGINS, useClass: MyCustomPlugin, multi: true}], +}; +``` diff --git a/goldens/public-api/platform-browser/errors.api.md b/goldens/public-api/platform-browser/errors.api.md index ead51d7ea4fe..8980f5fff998 100644 --- a/goldens/public-api/platform-browser/errors.api.md +++ b/goldens/public-api/platform-browser/errors.api.md @@ -13,7 +13,7 @@ export const enum RuntimeErrorCode { // (undocumented) HYDRATION_CONFLICTING_FEATURES = 5001, // (undocumented) - NO_PLUGIN_FOR_EVENT = 5101, + NO_PLUGIN_FOR_EVENT = -5101, // (undocumented) ROOT_NODE_NOT_FOUND = -5104, // (undocumented) diff --git a/packages/platform-browser/src/errors.ts b/packages/platform-browser/src/errors.ts index 432b6382594b..b186fe009feb 100644 --- a/packages/platform-browser/src/errors.ts +++ b/packages/platform-browser/src/errors.ts @@ -16,7 +16,7 @@ export const enum RuntimeErrorCode { // misc errors (5100-5200 range) BROWSER_MODULE_ALREADY_LOADED = 5100, - NO_PLUGIN_FOR_EVENT = 5101, + NO_PLUGIN_FOR_EVENT = -5101, UNSUPPORTED_EVENT_TARGET = 5102, TESTABILITY_NOT_FOUND = 5103, ROOT_NODE_NOT_FOUND = -5104, diff --git a/packages/platform-browser/test/dom/events/event_manager_spec.ts b/packages/platform-browser/test/dom/events/event_manager_spec.ts index cbf0b2e70095..bfb8f2d1c7f3 100644 --- a/packages/platform-browser/test/dom/events/event_manager_spec.ts +++ b/packages/platform-browser/test/dom/events/event_manager_spec.ts @@ -60,7 +60,7 @@ import type {} from 'zone.js'; const plugin = new FakeEventManagerPlugin(doc, ['dblclick']); const manager = new EventManager([plugin], new FakeNgZone()); expect(() => manager.addEventListener(element, 'click', null!)).toThrowError( - 'NG05101: No event manager plugin found for event click', + 'NG05101: No event manager plugin found for event click. Find more at https://next.angular.dev/errors/NG05101', ); });