diff --git a/src/lib/tooltip/tooltip.spec.ts b/src/lib/tooltip/tooltip.spec.ts index 74cbc6a15051..643711d0f5e7 100644 --- a/src/lib/tooltip/tooltip.spec.ts +++ b/src/lib/tooltip/tooltip.spec.ts @@ -50,6 +50,14 @@ describe('MdTooltip', () => { tooltipDirective._handleMouseLeave(null); expect(overlayContainerElement.textContent).toBe(''); }); + + it('should be removed after parent destroyed', () => { + tooltipDirective._handleMouseEnter(null); + expect(tooltipDirective.visible).toBeTruthy(); + fixture.destroy(); + expect(overlayContainerElement.childNodes.length).toBe(0); + expect(overlayContainerElement.textContent).toBe(''); + }); }); }); diff --git a/src/lib/tooltip/tooltip.ts b/src/lib/tooltip/tooltip.ts index d48dd81ba200..6916c761cc7a 100644 --- a/src/lib/tooltip/tooltip.ts +++ b/src/lib/tooltip/tooltip.ts @@ -68,6 +68,15 @@ export class MdTooltip { this._createOverlay(); } + /** + * Remove overlay after tooltip's parent has been destroyed + */ + ngOnDestroy() { + this.visible = false; + this._overlayRef.dispose(); + this._overlayRef = null; + } + /** * Create the overlay config and position strategy */