Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions src/lib/tooltip/tooltip.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,26 @@ describe('MatTooltip', () => {
expect(tooltipDirective._tooltipInstance).toBeNull();
}));

it('should be able to re-open a tooltip if it was closed by detaching the overlay',
fakeAsync(() => {
tooltipDirective.show();
tick(0);
expect(tooltipDirective._isTooltipVisible()).toBe(true);
fixture.detectChanges();
tick(500);

tooltipDirective._overlayRef!.detach();
tick(0);
fixture.detectChanges();
expect(tooltipDirective._isTooltipVisible()).toBe(false);
flushMicrotasks();
expect(tooltipDirective._tooltipInstance).toBeNull();

tooltipDirective.show();
tick(0);
expect(tooltipDirective._isTooltipVisible()).toBe(true);
}));

it('should show with delay', fakeAsync(() => {
expect(tooltipDirective._tooltipInstance).toBeUndefined();

Expand Down
8 changes: 4 additions & 4 deletions src/lib/tooltip/tooltip.ts
Original file line number Diff line number Diff line change
Expand Up @@ -255,13 +255,13 @@ export class MatTooltip implements OnDestroy {

/** Create the tooltip to display */
private _createTooltip(): void {
let overlayRef = this._createOverlay();
let portal = new ComponentPortal(TooltipComponent, this._viewContainerRef);
const overlayRef = this._createOverlay();
const portal = new ComponentPortal(TooltipComponent, this._viewContainerRef);

this._tooltipInstance = overlayRef.attach(portal).instance;

// Dispose the overlay when finished the shown tooltip.
this._tooltipInstance!.afterHidden().subscribe(() => {
// Dispose of the tooltip when the overlay is detached.
overlayRef.detachments().subscribe(() => {
// Check first if the tooltip has already been removed through this components destroy.
if (this._tooltipInstance) {
this._disposeTooltip();
Expand Down