@@ -534,6 +534,28 @@ describe('Standalone Menu Pattern', () => {
534534 } ) ;
535535 } ) ;
536536
537+ describe ( 'role override' , ( ) => {
538+ it ( 'should allow overriding the default menuitem role' , ( ) => {
539+ TestBed . resetTestingModule ( ) ;
540+ TestBed . configureTestingModule ( {
541+ imports : [ MenuItemRoleOverrideExample ] ,
542+ } ) ;
543+ const roleFixture = TestBed . createComponent ( MenuItemRoleOverrideExample ) ;
544+ roleFixture . detectChanges ( ) ;
545+
546+ const items = roleFixture . debugElement
547+ . queryAll ( By . directive ( MenuItem ) )
548+ . map ( debugEl => debugEl . nativeElement as HTMLElement ) ;
549+
550+ expect ( items [ 0 ] . getAttribute ( 'role' ) ) . toBe ( 'menuitemradio' ) ;
551+ expect ( items [ 1 ] . getAttribute ( 'role' ) ) . toBe ( 'menuitemcheckbox' ) ;
552+
553+ roleFixture . componentInstance . customRole . set ( 'menuitem' ) ;
554+ roleFixture . detectChanges ( ) ;
555+ expect ( items [ 1 ] . getAttribute ( 'role' ) ) . toBe ( 'menuitem' ) ;
556+ } ) ;
557+ } ) ;
558+
537559 describe ( 'structural validations' , ( ) => {
538560 let consoleSpy : jasmine . Spy ;
539561
@@ -1372,8 +1394,8 @@ class MenuItemOutsideMenu {}
13721394
13731395 <ng-template
13741396 cdkConnectedOverlay
1375- [cdkConnectedOverlayOrigin]="origin"
13761397 [cdkConnectedOverlayOpen]="menuTrigger.expanded()"
1398+ [cdkConnectedOverlayOrigin]="origin"
13771399 >
13781400 <div ngMenu #overlayMenu="ngMenu">
13791401 <ng-template ngMenuContent>
@@ -1404,3 +1426,17 @@ class CdkOverlayMenuExample {
14041426 this . _cdr . markForCheck ( ) ;
14051427 }
14061428}
1429+
1430+ @Component ( {
1431+ template : `
1432+ <div ngMenu>
1433+ <div ngMenuItem value="item0" role="menuitemradio">Item 0</div>
1434+ <div ngMenuItem value="item1" [role]="customRole()">Item 1</div>
1435+ </div>
1436+ ` ,
1437+ imports : [ Menu , MenuItem ] ,
1438+ changeDetection : ChangeDetectionStrategy . Eager ,
1439+ } )
1440+ class MenuItemRoleOverrideExample {
1441+ customRole = signal < 'menuitem' | 'menuitemradio' | 'menuitemcheckbox' > ( 'menuitemcheckbox' ) ;
1442+ }
0 commit comments