Olá, Thiago, tudo bem?
Nos desculpe a demora em te responder.
Você fez uma ótima observação! O que está acontecendo é o seguinte: perceba que o único lugar da aplicação em que HttpClientModule
foi importado foi no módulo PhotoModule
. Esse módulo, por sua vez, é importado por PhotoListModule
, que é importado por PhotosModule
, e que por fim é importado por AppModule
.
Perceba que há uma "cadeia de importações" desde AppModule
até o módulo HttpClientModule
:
AppModule < PhotosModule < PhotoListModule < PhotoModule < HttpClientModule
Pode ser estranho, mas isso é suficiente para que a classe HttpClient
, que faz parte de HttpClientModule
, esteja disponível para a declaração AppComponent
do módulo AppModule
(ou seja, para toda a aplicação).
Mas atenção! Isso só é possível porque HttpClient
é apenas uma classe, e não um componente que estamos utilizando no template de outro componente.
Se por algum motivo HttpClientModule
declarasse um componente que quiséssemos utilizar no template de SignInComponent
, por exemplo, aí então precisaríamos importar diretamente HttpClientModule
em HomeModule
.
Lembra que no arquivo AppRoutingModule
nós utilizamos classes como PhotoListComponent
e PhotoFormComponent
mesmo sem importar seus respectivos módulos diretamente em AppModule
ou no próprio AppRoutingModule
? É uma situação semelhante, porque estamos usando apenas as classes desses componentes, e não o selector
no template de algum outro componente. É como se essas classes também estivessem disponíveis através dessa "cadeia de importações":
AppModule < PhotosModule < PhotoListModule, PhotoFormModule
De certa forma, temos uma liberdade bem maior de utilizar essas "classes puras" em toda a nossa aplicação, incluindo HttpClient
.
Mas para propósitos de organização, minha recomendação é importar o HttpClientModule
diretamente em AppModule
, já que é uma dependência que usamos em vários lugares da nossa aplicação (essa recomendação é mencionada na documentação).
Essa parte de módulos no Angular é bastante confusa mesmo, até eu me confundi em algumas coisas para poder ter explicar haha
Espero ter ajudado! Abraços e bons estudos :)