Загрузка...
Загрузка...
Продолжая работу с платформой, вы принимаете условия Политики конфиденциальности и использование файлов cookie.
В Angular внедрение зависимостей (Dependency Injection, DI) построено на иерархии инжекторов, где зависимости могут быть доступны:
Angular создает дерево инжекторов, схожее с деревом компонентов. Каждый компонент может иметь собственный инжектор, унаследованный от родителя.
@Injectable({ providedIn: 'root' })providers.@Injectable({ providedIn: 'root' })
export class LoggerService {}
Используется по умолчанию для singleton-сервисов.
@NgModule({
providers: [AuthService]
})
export class AuthModule {}
Хорошо для ограниченного доступа и lazy-loaded модулей.
@Component({
selector: 'app-cart',
templateUrl: './cart.component.html',
providers: [CartService]
})
export class CartComponent {}
При каждом использовании компонента будет создан новый экземпляр сервиса.
@Directive({
selector: '[highlight]',
providers: [HighlightService]
})
export class HighlightDirective {}
Когда Angular внедряет зависимость, он:
root).@Component({
selector: 'parent',
providers: [SharedService],
template: `<child></child>`
})
export class ParentComponent {}
@Component({
selector: 'child',
template: `...`
})
export class ChildComponent {
constructor(shared: SharedService) {} // получит instance от parent
}
Если SharedService не указан в child, он будет унаследован от родителя.