diff --git a/src/cdk-experimental/combobox/combobox.spec.ts b/src/cdk-experimental/combobox/combobox.spec.ts index e2604f0f68fa..ad025a0fa60c 100644 --- a/src/cdk-experimental/combobox/combobox.spec.ts +++ b/src/cdk-experimental/combobox/combobox.spec.ts @@ -179,6 +179,18 @@ describe('Combobox', () => { expect(comboboxInstance.isOpen()).toBeFalse(); }); + + it('should clean up the overlay on destroy', () => { + expect(document.querySelectorAll('.cdk-overlay-pane').length).toBe(0); + + dispatchMouseEvent(comboboxElement, 'click'); + fixture.detectChanges(); + expect(document.querySelectorAll('.cdk-overlay-pane').length).toBe(1); + + fixture.destroy(); + expect(document.querySelectorAll('.cdk-overlay-pane').length).toBe(0); + }); + }); describe('with a coerce open action property function', () => { diff --git a/src/cdk-experimental/combobox/combobox.ts b/src/cdk-experimental/combobox/combobox.ts index c30a6faa1640..08fbcb9878de 100644 --- a/src/cdk-experimental/combobox/combobox.ts +++ b/src/cdk-experimental/combobox/combobox.ts @@ -114,6 +114,10 @@ export class CdkCombobox implements OnDestroy, AfterContentInit { } ngOnDestroy() { + if (this._overlayRef) { + this._overlayRef.dispose(); + } + this.opened.complete(); this.closed.complete(); this.panelValueChanged.complete();