diff --git a/src/cdk/overlay/keyboard/overlay-keyboard-dispatcher.spec.ts b/src/cdk/overlay/keyboard/overlay-keyboard-dispatcher.spec.ts index 33fbcc3ef5fa..ee56850e42cd 100644 --- a/src/cdk/overlay/keyboard/overlay-keyboard-dispatcher.spec.ts +++ b/src/cdk/overlay/keyboard/overlay-keyboard-dispatcher.spec.ts @@ -94,4 +94,15 @@ describe('OverlayKeyboardDispatcher', () => { expect(overlayTwoSpy).not.toHaveBeenCalled(); }); + it('should complete the keydown stream on dispose', () => { + const overlayRef = overlay.create(); + const completeSpy = jasmine.createSpy('keydown complete spy'); + + overlayRef.keydownEvents().subscribe(undefined, undefined, completeSpy); + + overlayRef.dispose(); + + expect(completeSpy).toHaveBeenCalled(); + }); + }); diff --git a/src/cdk/overlay/overlay-ref.ts b/src/cdk/overlay/overlay-ref.ts index c5b71dee498f..6b26825dc23e 100644 --- a/src/cdk/overlay/overlay-ref.ts +++ b/src/cdk/overlay/overlay-ref.ts @@ -151,6 +151,7 @@ export class OverlayRef implements PortalOutlet { this._portalOutlet.dispose(); this._attachments.complete(); this._backdropClick.complete(); + this._keydownEvents.complete(); if (isAttached) { this._detachments.next();