1
resposta

Modulo Angular NgModule parâmetro providers

No angular2+ trabalhamos com .modules.ts e nele tem um parâmetro do ngModule que fica próximo de "declarations", "imports", se chama "providers" e ele recebe um array, em sua definição diz: "The set of injectable objects that are available in the injector of this module.", porque não declaramos os services neste providers ?

Desculpa, mais é construtivo a pergunta, porque são duas metodologias diferente, que talvez faça a mesma coisa. Por acaso o @Injectable já faz isso automaticamente quando o utilizamos em um service? E fica opcional declarar este service no modulo? Tem alguma vantagem ou desvantagem, fazer assim?

Obrigado!

1 resposta

Ôps, beleza Walmir! providers nos módulos do angular serve para determinar quais serviços você deseja que estejam no escopo global daquele módulo, exemplo:

Tenho um error.module.ts e um app.module.ts: Suponhamos que há um serviço chamado regraErrorService.ts, porém declarei ele no providers do módulo error.module.ts, significa que apenas os componentes que fazem parte deste módulo poderão utilizar o serviço.

Porém por algum motivo percebi que este serviço poderia servir para outros componentes que estão fora deste escopo, então em vez de declarar no providers do error.module.ts, irei declarar no app.module.ts, desta forma qualquer componente poderá utilizar este serviço.

Enquanto a decisão se declarar no providers ou não, você pode determinar se está em escopo global de duas formas:

No decorador do serviço @Injectable faz o seguinte: @Injectable({ providedIn: 'root' }) Significa que este serviço poderá ser utilizado em qualquer componente do seu projeto, e sem a necessidade de declarar no providers do módulo.

Agora se estiver deste jeito: @Injectable() Será então necessário sua devida declaração.

Espero ter ajudado.