Right, UI frameworks like Angular do dependency injection at the framework level
because the underlying language doesn't have direct support for dynamic scope.
Sort of like how you can do object-oriented programming in C by making a struct of function pointers to create your own v-tables.