ui-router / angular

UI-Router for Angular: State-based routing for Angular (v2+)
https://ui-router.github.io/ng2/
MIT License
349 stars 134 forks source link

MergeInjector breaks normal Angular DI priority #977

Open msgoloborodov opened 1 year ago

msgoloborodov commented 1 year ago

https://github.com/ui-router/angular/blob/34c0efcc04d1ccb3384b06dd362451d3ff40a62d/src/directives/uiView.ts#L326

msgoloborodov commented 1 year ago

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.

msgoloborodov commented 1 year ago

PR to fix this issue: https://github.com/ui-router/angular/pull/978.

wawyed commented 11 months ago

When is this an issue?