Что такое внедрение зависимостей в Angular и зачем оно?
Вы объявляете, что нужно классу, в его конструкторе, и Angular это подаёт, вместо того чтобы класс сам конструировал свои зависимости. Существует ради того, чтобы одному и тому же компоненту можно было дать настоящий сервис в приложении и подставной в тесте, не меняя его код. providedIn: 'root' делает сервис синглтоном на всё приложение.