Я понял это так: использование массива providers
модуля NgModule на самом деле создает провайдера.
Например, посмотрите на переопределение провайдеров:
providers: [{ provide: MyService, useClass: MyServiceMock }]
Как видите, вы действительно создаете провайдера из этого массива.
Я полагаю, что написание этого "стандартного" способа - это просто ярлык для создания провайдера.
Инжектор, с другой стороны, это тот, который создает экземпляры класса, которые будут внедрены как зависимости в ваши функции.
Другими словами, провайдером будет услуга, отмеченная @Injectable
, а инжектором будет тот, кто вызывает new MyService()
.
(Опять же, я не уверен насчет моего объяснения, просто я так понял).