Skip to content

fix(router-store): add null to selectFragment's return type - #161

Merged
Terrence721 merged 2 commits into
mainfrom
code-review/router-store-models
Aug 19, 2026
Merged

fix(router-store): add null to selectFragment's return type#161
Terrence721 merged 2 commits into
mainfrom
code-review/router-store-models

Conversation

@Terrence721

Copy link
Copy Markdown
Owner

Reviews modules/router-store/src/models.ts as part of the router-store module code-review audit (#38, sub-issue of #32). Third real finding in this module (all fixed).

RouterStateSelectors.selectFragment was missing null from its return type, confirmed against Angular's real .d.ts for ActivatedRouteSnapshot.fragment. Scoped fix - the broader any-typed selector chain is intentional architecture, not a bug. Full write-up in the linked issue.

Closes #160

RouterStateSelectors.selectFragment was typed
MemoizedSelector<V, string | undefined>, missing null - Angular's
real ActivatedRouteSnapshot.fragment is string | null, confirmed
against @angular/router's own .d.ts. Silently unenforced because the
selector chain is any-typed by design (the router state's true shape
depends on the consumer's chosen serializer). selectTitle checked for
the same class of gap and confirmed correct as-is (a getter Angular
itself normalizes to string | undefined). Fix scoped to the one
concretely-verified mismatch, not the broader any-typed chain, which
is architectural, not a bug.

Verified: yarn nx build-package router-store (clean), yarn nx test
router-store (156/156, 1 pre-existing skip, 0 type errors), yarn nx
lint router-store (0 errors, 1 pre-existing unrelated warning).

Closes #160
@Terrence721
Terrence721 merged commit 7c5885f into main Aug 19, 2026
14 of 15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Code review: modules/router-store/src/models.ts

1 participant