Kurs Angular · Moduł 5: Serwisy i DI
Dependency Injection - System Dostaw Zamku
W tej lekcji2
Dependency Injection (DI) to wzorzec, w którym Angular automatycznie dostarcza zależności do komponentów i serwisów - jak system zaopatrzenia dostarczający broń i prowiant do zamków.
Wstrzykiwanie Serwisów
Sposób 1: inject() (Angular 14+, zalecany)
import { Component, inject } from '@angular/core';
import { KatanaService } from './services/katana.service';
@Component({
selector: 'app-forge',
standalone: true,
template: `
<h2>Kuźnia Katany</h2>
<button (click)="forgeKatana()">Wykuj Katanę</button>
<ul>
@for (katana of katany; track katana.id) {
<li>{{ katana.name }} - {{ katana.damage }} DMG</li>
}
</ul>
`
})
export class ForgeComponent {
private katanaService = inject(KatanaService);
katany = this.katanaService.getAll();
forgeKatana(): void {
this.katanaService.forge('Masamune', 'Tachi');
this.katany = this.katanaService.getAll();
}
}Sposób 2: Constructor Injection (klasyczny)
@Component({...})
export class ForgeComponent {
constructor(private katanaService: KatanaService) {}
forgeKatana(): void {
this.katanaService.forge('Masamune', 'Tachi');
}
}inject() vs Constructor
| Cecha | inject() | Constructor |
|---|---|---|
| Składnia | Prostsza | Standardowa |
| Używanie w funkcjach | Tak (z ograniczeniami) | Nie |
| Dziedziczenie | Łatwiejsze | Wymaga super() |
| Testowanie | Podobne | Podobne |
Hasła z dokumentacji w tej lekcji
Widzisz błąd w tej lekcji?
Sprawdź się
Odpowiedz na pytania z tej lekcji. Wybierz odpowiedź, a od razu zobaczysz, czy jest poprawna.
1. Która metoda wstrzykiwania serwisów jest zalecana od Angular 14+?
2. Czym jest Dependency Injection (DI) w Angular?
To 2 z 3 pytań do tej lekcji. Pozostałe rozwiążesz w grze.
Zadania praktyczne w grze
- Układanie w poziomie
Ułóż linię wstrzykującą serwis przez inject() (lewo do prawa):
- Edytor kodu
Uzupełnij komponent tak, by pobrał SamuraiService bez konstruktora, wprost przy deklaracji pola.
- Układanie w pionie
Uporządkuj linie komponentu wstrzykującego serwis przez konstruktor (klasyczny sposób):