Migrate Angular code to call inject() #6992
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation for features / changes
When tsc's
--target
is updatedes2022
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.