Se tivermos um serviço como este que faz parte de uma biblioteca:
@Injectable({ providedIn: 'root' })
export class ChartJSProvider {
constructor() {
Chart.register(...registerables);
}
}
E um aplicativo que usa a biblioteca.
O ChartJSProvider
singleton será criado automaticamente e incluído nas instâncias em execução do aplicativo Angular, mesmo que não seja injetado em nenhum componente usado pelo aplicativo ou seja sacudido pela árvore?
Um dos motivos pelos
{ providedIn: 'root' }
quais foi introduzido foi permitir a fácil movimentação de serviços não utilizados.No momento do compilador, ele apenas configura a fábrica usada pelo sistema DI.
Portanto, se não for injetado (por meio
inject()
de injeção de construtor), sim, a classe será removida do pacote pela otimização de agitação de árvore.