mirror of
https://github.com/angular/angular.git
synced 2026-09-14 13:54:52 +08:00
fix(tooltip): remove native event listener on component destroy (#5144)
* fix(tooltip): remove native event listener on component destroy Component should clean up events it has registered to. Closes #4499 * Break at higher syntactic level * Undo accidental formatting
This commit is contained in:
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user