The Angular DI implementation is the backbone of the Angular framework. Angular components delegate complex tasks to Angular services, which are heavily based on Angular DI.
In this chapter, we learned what Angular DI is and how we can start leveraging it by creating Angular services. We explored different ways of injecting Angular services into components. We saw how to share services between components, isolate services in components, and define dependency access through the component tree.
Finally, we investigated how to override Angular services by replacing the service implementation or transforming existing objects into services.
In the next chapter, we will learn what reactive programming is and how we can use observables in the context of an Angular application.