diff --git a/packages/animations/browser/src/render/transition_animation_engine.ts b/packages/animations/browser/src/render/transition_animation_engine.ts index 192c747e87..205f6ecbba 100644 --- a/packages/animations/browser/src/render/transition_animation_engine.ts +++ b/packages/animations/browser/src/render/transition_animation_engine.ts @@ -649,8 +649,11 @@ export class TransitionAnimationEngine { trigger(namespaceId: string, element: any, name: string, value: any): boolean { if (isElementNode(element)) { - this._fetchNamespace(namespaceId).trigger(element, name, value); - return true; + const ns = this._fetchNamespace(namespaceId); + if (ns) { + ns.trigger(element, name, value); + return true; + } } return false; } diff --git a/packages/animations/browser/test/render/transition_animation_engine_spec.ts b/packages/animations/browser/test/render/transition_animation_engine_spec.ts index 314b262780..5a122e9bd5 100644 --- a/packages/animations/browser/test/render/transition_animation_engine_spec.ts +++ b/packages/animations/browser/test/render/transition_animation_engine_spec.ts @@ -616,6 +616,13 @@ const DEFAULT_NAMESPACE_ID = 'id'; expect(element.contains(child1)).toBe(true); expect(element.contains(child2)).toBe(true); }); + + it('should not throw an error if a missing namespace is used', () => { + const engine = makeEngine(); + const ID = 'foo'; + const TRIGGER = 'fooTrigger'; + expect(() => { engine.trigger(ID, element, TRIGGER, 'something'); }).not.toThrow(); + }); }); }); })();