Foi dito que o "providedIn: 'root' " é responsável pele visibilidade do Service para toda a aplicação. Então eu posso definir quais componentes podem acesso a este Service?
Foi dito que o "providedIn: 'root' " é responsável pele visibilidade do Service para toda a aplicação. Então eu posso definir quais componentes podem acesso a este Service?
Olá, Jorge!
Quando você define providedIn: 'root'
em um serviço, você está tornando esse serviço disponível globalmente para toda a aplicação como. Isso significa que qualquer componente pode injetar esse serviço em seu construtor e usá-lo como dito na aula.
Porém, se você deseja restringir o acesso a este serviço a apenas alguns componentes específicos, você pode fazer isso não usando providedIn: 'root'
, mas sim fornecendo o serviço no metadado providers
do componente específico. Observe o exemplo abaixo:
import { MeuServico } from './meu-servico.service';
@Component({
selector: 'meu-componente',
templateUrl: './meu-componente.component.html',
providers: [MeuServico]
})
export class MeuComponente {
constructor(private meuServico: MeuServico) { }
}
Neste caso, MeuServico
só estará disponível para MeuComponente
e quaisquer componentes filhos de MeuComponente
. Se outro componente que não seja filho de MeuComponente
tentar injetar MeuServico
, o Angular não será capaz de encontrar o provedor e lançará um erro, nesse momento da aula não optamos por essa escolha, mas essa opção evita que serviços sejam utilizados onde não são necessários e acaba facilitando a manutenção e o do seu projeto, digamos que ai o Angular e o Type ganha sua força.
Espero ter ajudado e reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!
Sucesso ✨
Um grande abraço e até mais!
Perfeito Victor, muito obrigado!