Проверяет понимание механизма Dependency Injection в Angular, его уровней и применения не только для сервисов, но и для других сущностей.
Dependency Injection — это подход, при котором объект получает свои зависимости извне, а не создает их сам. В Angular это реализовано через систему инжекторов: каждый класс, помеченный декоратором @Injectable(), может быть зарегистрирован в провайдере, и Angular автоматически создаст его экземпляр и передаст туда, где он запрошен.
Angular использует иерархическую систему инжекторов. Существует три основных уровня:
providedIn: 'root', попадают сюда.providers конкретного NgModule, он доступен только в пределах этого модуля.providers компонента, он создается отдельно для каждого экземпляра компонента и доступен только ему и его дочерним элементам.DI в Angular применяется не только к сервисам. Вы можете внедрять зависимости в:
@Injectable().useFactory или useValue.// Сервис с providedIn: 'root'
@Injectable({ providedIn: 'root' })
export class LoggerService {
log(msg: string) { console.log(msg); }
}
// Компонент, использующий DI
@Component({...})
export class AppComponent {
constructor(private logger: LoggerService) {}
ngOnInit() {
this.logger.log('App started');
}
}
// Пример с фабрикой
const TOKEN = new InjectionToken<string>('config');
providers: [
{ provide: TOKEN, useFactory: () => 'some value' }
]DI — это фундаментальный механизм Angular, который делает код модульным, тестируемым и легко расширяемым. Его стоит использовать всегда, когда нужно управлять зависимостями между классами, будь то сервисы, фабрики или конфигурации, чтобы избежать жесткой связанности и упростить тестирование.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию