Fala aí Allan, tudo bem? Desculpa a demora, está bem corrido as coisas por aqui. Dei uma olhada no seu projeto, vamos lá:
Repare no seu photos.module.ts
:
@NgModule({
imports: [
PhotoModule,
PhotoFormModule,
PhotoListModule,
CommonModule
],
exports: [PhotoListComponent]
})
export class PhotosModule{}
Você está importando seus módulos nele, ou seja: PhotoModule
, PhotoFormModule
e PhotoListModule
.
O módulo que vai precisar injetar o seu PhotoService
é o PhotoListModule
, pois no componente você injeta o serviço no construtor e no resolver também, então esses dois arquivos vão precisar injetar o serviço.
O ideal nesse cenário é que a declaração de HttpClientModule
fosse feita no PhotoListModule
e não no PhotoModule
como foi feito no curso (acho que o instrutor deixou passar despercebido).
Mas, porque funcionou então? Ele vai funcionar desde que pelo menos um dos três (PhotoModule
, PhotoFormModule
e PhotoListModule
) módulos importem o HttpClientModule
ou o módulo pai de todos eles, no caso: PhotosModule
.
Se nenhum desses três ou o pai importar o módulo HttpClientModule
, ai seu serviço não vai conseguir usar o HttpClient
pois a injeção de dependência do Angular não sabe lhe prover esse recurso.
Uma vez o módulo importado, ai você está falando para o Angular:
Olha Angular, quando eu precisar injetar algum HttpClient, você usa o HttpClientModule para me fornecê-lo.
Sim, é um pouco complexo mesmo esse gerenciamento de módulos, injeção de dependência e tals. Mas com o tempo você vai pegando o jeito.
Espero ter ajudado e desculpe qualquer problema.