Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Duvida sobre o "providedIn"

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?

2 respostas
solução!

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!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Perfeito Victor, muito obrigado!