diff --git a/src/cdk/a11y/key-manager/list-key-manager.spec.ts b/src/cdk/a11y/key-manager/list-key-manager.spec.ts index 849db859841b..0230efc4391c 100644 --- a/src/cdk/a11y/key-manager/list-key-manager.spec.ts +++ b/src/cdk/a11y/key-manager/list-key-manager.spec.ts @@ -114,6 +114,18 @@ describe('Key managers', () => { expect(keyManager.activeItem).toBeNull(); }); + it('should reset the activeItem to null if it is removed from the QueryList', () => { + expect(keyManager.activeItemIndex).toBe(0); + expect(keyManager.activeItem!.getLabel()).toBe('one'); + + itemList.items.splice(0); + itemList.notifyOnChanges(); + + expect(keyManager.activeItemIndex).toBe(-1); + expect(keyManager.activeItem).toBeNull(); + + }); + describe('Key events', () => { it('should emit tabOut when the tab key is pressed', () => { diff --git a/src/cdk/a11y/key-manager/list-key-manager.ts b/src/cdk/a11y/key-manager/list-key-manager.ts index c3e4a135e56a..771e9a53bec6 100644 --- a/src/cdk/a11y/key-manager/list-key-manager.ts +++ b/src/cdk/a11y/key-manager/list-key-manager.ts @@ -72,6 +72,9 @@ export class ListKeyManager { if (newIndex > -1 && newIndex !== this._activeItemIndex) { this._activeItemIndex = newIndex; + } else { + this._activeItemIndex = -1; + this._activeItem = null; } } });