Skip to content

Commit 8eb494e

Browse files
authored
fix(cdk/menu): run change detection for changes to overlay ref of trigger (#27726)
Fixes an issue where menu triggers placed inside components using OnPush change detection would not have their `aria-expanded` property updated correctly when switching between sibling triggers. Fixes #27725
1 parent a080fcb commit 8eb494e

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

src/cdk/menu/menu-trigger.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import {Directive, ElementRef, inject, NgZone, OnDestroy} from '@angular/core';
9+
import {ChangeDetectorRef, Directive, ElementRef, inject, NgZone, OnDestroy} from '@angular/core';
1010
import {InputModalityDetector} from '@angular/cdk/a11y';
1111
import {Directionality} from '@angular/cdk/bidi';
1212
import {
@@ -70,6 +70,7 @@ export class CdkMenuTrigger extends CdkMenuTriggerBase implements OnDestroy {
7070
private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef);
7171
private readonly _overlay = inject(Overlay);
7272
private readonly _ngZone = inject(NgZone);
73+
private readonly _changeDetectorRef = inject(ChangeDetectorRef);
7374
private readonly _inputModalityDetector = inject(InputModalityDetector);
7475
private readonly _directionality = inject(Directionality, {optional: true});
7576

@@ -101,6 +102,7 @@ export class CdkMenuTrigger extends CdkMenuTriggerBase implements OnDestroy {
101102

102103
this.overlayRef = this.overlayRef || this._overlay.create(this._getOverlayConfig());
103104
this.overlayRef.attach(this.getMenuContentPortal());
105+
this._changeDetectorRef.markForCheck();
104106
this._subscribeToOutsideClicks();
105107
}
106108
}
@@ -111,6 +113,7 @@ export class CdkMenuTrigger extends CdkMenuTriggerBase implements OnDestroy {
111113
this.closed.next();
112114

113115
this.overlayRef!.detach();
116+
this._changeDetectorRef.markForCheck();
114117
}
115118
this._closeSiblingTriggers();
116119
}

0 commit comments

Comments
 (0)