diff --git a/change/@ni-nimble-components-b9a584ff-3c6d-46d3-afde-b9af6c45ec0e.json b/change/@ni-nimble-components-b9a584ff-3c6d-46d3-afde-b9af6c45ec0e.json new file mode 100644 index 0000000000..85bbd0b509 --- /dev/null +++ b/change/@ni-nimble-components-b9a584ff-3c6d-46d3-afde-b9af6c45ec0e.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Fix two sources of references to detached rows", + "packageName": "@ni/nimble-components", + "email": "7282195+m-akinc@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/packages/nimble-components/src/table/components/row/index.ts b/packages/nimble-components/src/table/components/row/index.ts index 38b43653b9..bdb03bb891 100644 --- a/packages/nimble-components/src/table/components/row/index.ts +++ b/packages/nimble-components/src/table/components/row/index.ts @@ -170,6 +170,11 @@ export class TableRow< return null; } + public override disconnectedCallback(): void { + super.disconnectedCallback(); + this.removeColumnObservers(); + } + /** @internal */ public onSelectionCheckboxChange(event: CustomEvent): void { if (this.ignoreSelectionChangeEvents) { diff --git a/packages/nimble-components/src/table/models/keyboard-navigation-manager.ts b/packages/nimble-components/src/table/models/keyboard-navigation-manager.ts index d2e7f7bccf..ac2b55fb02 100644 --- a/packages/nimble-components/src/table/models/keyboard-navigation-manager.ts +++ b/packages/nimble-components/src/table/models/keyboard-navigation-manager.ts @@ -171,6 +171,7 @@ implements Subscriber { for (const visibleRow of this.table.rowElements) { const rowNotifier = Observable.getNotifier(visibleRow); rowNotifier.subscribe(this, 'resolvedRowIndex'); + this.visibleRowNotifiers.push(rowNotifier); if (visibleRow.resolvedRowIndex === this.rowIndex) { focusRowAndCell = true; }