diff --git a/src/lib/menu/menu-trigger.ts b/src/lib/menu/menu-trigger.ts index b2895608564a..aa7349761a2d 100644 --- a/src/lib/menu/menu-trigger.ts +++ b/src/lib/menu/menu-trigger.ts @@ -195,6 +195,8 @@ export class MatMenuTrigger implements AfterContentInit, OnDestroy { return; } + this._checkMenu(); + const overlayRef = this._createOverlay(); this._setPosition(overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy); overlayRef.attach(this._portal); diff --git a/src/lib/menu/menu.spec.ts b/src/lib/menu/menu.spec.ts index c4bcae34397f..4b10cf88d178 100644 --- a/src/lib/menu/menu.spec.ts +++ b/src/lib/menu/menu.spec.ts @@ -427,6 +427,19 @@ describe('MatMenu', () => { expect(triggerEl.hasAttribute('aria-expanded')).toBe(false); }); + it('should throw the correct error if the menu is not defined after init', () => { + const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + fixture.detectChanges(); + + fixture.componentInstance.trigger.menu = null!; + fixture.detectChanges(); + + expect(() => { + fixture.componentInstance.trigger.openMenu(); + fixture.detectChanges(); + }).toThrowError(/must pass in an mat-menu instance/); + }); + describe('lazy rendering', () => { it('should be able to render the menu content lazily', fakeAsync(() => { const fixture = createComponent(SimpleLazyMenu);