diff --git a/src/lib/select/select.spec.ts b/src/lib/select/select.spec.ts index 83038234601e..55fe582fe39d 100644 --- a/src/lib/select/select.spec.ts +++ b/src/lib/select/select.spec.ts @@ -3458,6 +3458,22 @@ describe('MatSelect', () => { 'Expected `multiple` to have been set on dynamically-added option.'); })); + it('should update the active item index on click', fakeAsync(() => { + trigger.click(); + fixture.detectChanges(); + flush(); + + expect(fixture.componentInstance.select._keyManager.activeItemIndex).toBe(0); + + const options = overlayContainerElement.querySelectorAll('mat-option') as + NodeListOf; + + options[2].click(); + fixture.detectChanges(); + + expect(fixture.componentInstance.select._keyManager.activeItemIndex).toBe(2); + })); + }); }); diff --git a/src/lib/select/select.ts b/src/lib/select/select.ts index 778f16bc8764..f22f06989f9f 100644 --- a/src/lib/select/select.ts +++ b/src/lib/select/select.ts @@ -852,6 +852,7 @@ export class MatSelect extends _MatSelectMixinBase implements AfterContentInit, this._selectionModel.toggle(option); this.stateChanges.next(); wasSelected ? option.deselect() : option.select(); + this._keyManager.setActiveItem(this._getOptionIndex(option)!); this._sortValues(); } else { this._clearSelection(option.value == null ? undefined : option);