diff --git a/src/lib/tooltip/tooltip.ts b/src/lib/tooltip/tooltip.ts index 261b60a381b4..a2692b157c12 100644 --- a/src/lib/tooltip/tooltip.ts +++ b/src/lib/tooltip/tooltip.ts @@ -170,6 +170,9 @@ export class MdTooltip implements OnDestroy { get _matClass() { return this.tooltipClass; } set _matClass(v) { this.tooltipClass = v; } + private _enterListener: Function; + private _leaveListener: Function; + constructor( private _overlay: Overlay, private _elementRef: ElementRef, @@ -183,8 +186,10 @@ export class MdTooltip implements OnDestroy { // The mouse events shouldn't be bound on iOS devices, because // they can prevent the first tap from firing its click event. if (!_platform.IOS) { - _renderer.listen(_elementRef.nativeElement, 'mouseenter', () => this.show()); - _renderer.listen(_elementRef.nativeElement, 'mouseleave', () => this.hide()); + this._enterListener = + _renderer.listen(_elementRef.nativeElement, 'mouseenter', () => this.show()); + this._leaveListener = + _renderer.listen(_elementRef.nativeElement, 'mouseleave', () => this.hide()); } } @@ -195,6 +200,11 @@ export class MdTooltip implements OnDestroy { if (this._tooltipInstance) { this._disposeTooltip(); } + // Clean up the event listeners set in the constructor + if (!this._platform.IOS) { + this._enterListener(); + this._leaveListener(); + } } /** Shows the tooltip after the delay in ms, defaults to tooltip-delay-show or 0ms if no input */