In my Angular application, I had implemented the method of manual dependency injection for TypeScript child classes described in this blog. The goal was to eliminate having to inject providers into child classes just to pass them into the parent class. It worked fine at the time.
Sometime later, when I went to use it in a second Angular module, it failed. Searching uncovered that the previous method might (should?) have broken in Angular 7 (see this question), but the first use case continued to function.
I narrowed it down to a specific injection that fails: ChangeDetectorRef
(CDR). If I wrap each attempted, manual injection in a try/catch the ones after CDR are injected just as if specified in the constructor.
Is there something different or special about CDR? I can't provide it, since it comes from Angular. Is there something about it having to be tied to the child class?
Ultimately, I want to know if there's some way to make it work with the manual injection system, or if it has to remain as an automatic injection from every child class.
Addendum:
The specific error is
StaticInjectorError(AppModule)[ChildComponent -> ChangeDetectorRef]:
StaticInjectorError(Platform: core)[ChildComponent -> ChangeDetectorRef]:
NullInjectorError: No provider for ChangeDetectorRef!