You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
MergeInjector breaks normal Angular DI priority #977
https://angular.io/guide/hierarchical-dependency-injection#resolution-rules
Angular tries to find dependency in ElementInjector tree, if Angular doesn't find the provider in any ElementInjector hierarchies, it goes back to the element where the request originated and looks in the ModuleInjector hierarchy.
But UIView creates component with custom injector MergeInjector which firstly search token in ModuleInjector and then in ElementInjector.
For example, it will return service provided in root ModuleInjector, but it must return service provided in parent component or in lazy module (child module).
I think it should first look in all parents element injectors and only then in moduleInjector.
I haven't tested the PR yet, but I know at case where MergeInjector causes a problem. In an angular 18 app (dev-mode), lazy-loaded states are not compatible with angular devtools (chrome extension). They crash with the following error:
ASSERTION ERROR: getInjectorParent only support injectors of type R3Injector, NodeInjector, NullInjector
at throwError (core.mjs:525:9)
at getInjectorParent (core.mjs:30898:5)
at getInjectorResolutionPathHelper
As a result, the angular devtools don't load. The app is working fine though. The states are loading as they should.
angular/src/directives/uiView.ts
Line 326 in 34c0efc