Skip to content

Migrate Angular code to call inject() #6992

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

trevorade
Copy link

Motivation for features / changes

When tsc's --target is updated es2022 or newer, the initialization order of parameter properties changes. Inline field initializers that directly or indirectly reference parameter properties can break with this change as the parameter properties may be initialized if the reference occurs too soon.

This can be difficult to accurately statically detect because it's not always clear if callbacks are executed immediately or later.

Migrating to Angular's inject() function solves the problems as parameter properties are no longer used.

Technical description of changes

Updates classes where some inline field initializer has an indirect reference to a parameter property to use Angular inject().

Screenshots of UI changes (or N/A)

N/A

Detailed steps to verify changes work correctly (as executed by you)

Should be a no-op refactor. Simply verify test flows the involve all modified classes.

Alternate designs / implementations considered (or N/A)

We could also avoid this upcoming issue by moving the inline field initializers that reference uninitialized parameter properties into the constructor body. This is generally seen as an inferior change though.

trevorade and others added 3 commits May 2, 2025 09:31
Specifically, I am focusing on code locations where an inline field initializer references an uninitialized parameter property.

When tsc's `--target` is updated `es2022` or newer, the initialization order of parameter properties changes.
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.

1 participant