Tree shaking управляет служебным кодом, глядя на пути импорта. Если он импортирован, шейкер дерева предполагает, что он используется в приложении.
Например. Когда мы внедряем службу в @NgModule, мы упоминаем службу в импорте, и, следовательно, она удаляется и рассматривается как используемая сущность шейкером дерева
@NgModule({
imports: [],
declarations: [AppComponent],
bootstrap: [AppComponent],
providers: [SomeService]
});
Если мы внедряем службу с помощью @ Injectable ' providedIn ', сервис будет внедрен только тогда, когда модуль запросит его, в противном случае он будет удален treehaker. С помощью ' providedIn ' мы можем указать Angular, в каком модуле зарегистрировать нашу службу.
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class SomeService{
constructor() {}
}