Experimenting with Angular 2 dependency injection

In this post I want to explore how the dependency injection (DI) system works a bit in Angular 2. Dependency Injection is a variant of the Inversion of Control (IoC) pattern, and is a powerful way to construct an application so as to reduce coupling and increase test-ability (good explanation) »