devterview_$ iniciar simulação

Injeção de dependência hierárquica no Angular

DifícilSêniorInjeção de dependência

Pergunta

Como o sistema de injeção de dependência do Angular decide qual instância de um serviço entregar, e o que `providedIn: 'root'` faz?

Resposta esperada

O Angular tem uma hierarquia de injectors que espelha a árvore de componentes, com o root injector no topo. Quando um componente pede um serviço, o Angular sobe a hierarquia até achar um provider pra aquele token — a primeira ocorrência ganha, e todos os que compartilham esse injector compartilham a instância. `providedIn: 'root'` registra o serviço no root injector: uma única instância pra app toda (singleton) e, de quebra, tree-shakeável (se ninguém injeta, some do bundle). Prover no `providers` de um componente cria uma instância nova por instância daquele componente e seus filhos — útil pra estado com escopo (um form, um wizard). O erro comum é declarar o mesmo serviço em vários lugares sem querer e acabar com instâncias separadas.

Por que perguntam isso

Pergunta pleno. Sinal bom: entender que prover num componente cria instância por componente (útil pra escopo) e o risco de duplicar sem querer.

#dependency-injection#injectors#providedin
publicidade

Relacionadas