По тестовому заданию: у тебя есть AnnotationService. Какой алгоритм ты используешь, чтобы решить, должен ли сервис быть providedIn: 'root' или на уровне компонента/модуля?

providedIn: 'root' в Angular означает, что сервис будет зарегистрирован в корневом инжекторе приложения и будет синглтоном на уровне всего приложения.

Короткий ответ

Что ответить на собеседовании

providedIn: 'root' в Angular означает, что сервис будет зарегистрирован в корневом инжекторе приложения и будет синглтоном на уровне всего приложения. Это позволяет Angular автоматически создавать и предоставлять сервис без необходимости явно указывать его в массиве providers какого-либо модуля или компонента.

Подробный разбор

Ответ с пояснениями

providedIn: 'root' в Angular означает, что сервис будет зарегистрирован в корневом инжекторе приложения и будет синглтоном на уровне всего приложения. Это позволяет Angular автоматически создавать и предоставлять сервис без необходимости явно указывать его в массиве providers какого-либо модуля или компонента.

Отличия от указания зависимости в providers компонента:

  • Область видимости:

    • providedIn: 'root' — сервис доступен во всём приложении как один экземпляр.
    • providers компонента — сервис создаётся заново для каждого экземпляра компонента, то есть область видимости ограничена компонентом и его потомками.
  • Оптимизация:

    • При использовании providedIn: 'root' Angular может оптимизировать сборку, исключая сервисы, которые не используются.
  • Удобство:

    • providedIn: 'root' упрощает регистрацию сервисов, не нужно вручную добавлять их в providers.

Пример:

@Injectable({ providedIn: 'root' })
export class ApiService { }

@Component({
  selector: 'app-example',
  templateUrl: './example.component.html',
  providers: [LocalService] // новый экземпляр для каждого компонента
})
export class ExampleComponent { }

Таким образом, providedIn: 'root' подходит для сервисов с глобальной областью видимости, а providers компонента — для сервисов с локальной областью, специфичных для компонента.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку