Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Oman Palvelun Luominen Angularissa | Services and Dependency Injection in Angular
Angularin Perusteet

bookOman Palvelun Luominen Angularissa

Palvelun luominen

Angular tarjoaa kätevän CLI-komennon, jolla voit nopeasti luoda palvelun. Tämä komento luo tarvittavat tiedostot ja tuonnit:

Tämän komennon suorittamisen jälkeen Angular luo kaksi tiedostoa:

  • task.service.ts — varsinainen palvelutiedosto;

  • task.service.spec.ts — testitiedosto (voit poistaa tämän).

Tässä on task.service.ts-tiedoston alkuperäinen sisältö:

task-service.ts

task-service.ts

copy

@Injectable-koristelija ilmoittaa Angularille, että tämä palvelu voidaan injektoida muihin luokkiin.

providedIn: 'root' tarkoittaa, että Angular rekisteröi palvelun automaattisesti juurimoduuliin ja luo siitä yhden instanssin koko sovellukselle.

Note
Määritelmä

Singleton on suunnittelumalli, joka varmistaa, että luokalla on vain yksi instanssi ja tarjoaa globaalin pääsyn siihen.

Komponentti A, komponentti B tai mikä tahansa muu komponentti — kaikki saavat saman palvelun instanssin. Tämä on erittäin kätevää, koska voit tallentaa jaettua dataa (kuten tehtävälistan) ja välttää logiikan toiston.

Siksi palvelusta tulee tietyn sovelluksen logiikan tai datan yksittäinen totuuden lähde. Jos olet kiinnostunut, voit lukea lisää singleton-mallista tästä artikkelista.

Logiikan lisääminen palveluun

Seuraavaksi rakennetaan palvelun varsinainen logiikka. Palvelun tavoitteena on:

  • Tallentaa tehtävälista;

  • Palauttaa tehtävälista;

  • Poistaa tehtäviä;

  • Vaihtaa tehtävien valmistumistilaa.

Määritellään ensin, miltä tehtävä näyttää, luomalla TypeScript-rajapinta:

task-interface.ts

task-interface.ts

copy

Tämä rajapinta määrittelee selkeästi tehtävän rakenteen — siihen kuuluu id, otsikko ja valmistumistila. Et ole aiemmin käyttänyt rajapintoja, mutta tässä niiden lisääminen tekee koodista helpommin ymmärrettävää ja käsiteltävää.

Rakennetaan nyt palvelu, joka hallinnoi tehtävälistaasi:

task-service.ts

task-service.ts

copy

Tässä esimerkissä tehtävädata tallennetaan suoraan koodiin yksityiseen tasks-taulukkoon.

Jotta muut sovelluksen osat voivat käyttää tehtävälistaa, käytetään getTasks()-metodia. Se palauttaa kopion taulukosta käyttämällä spread-syntaksia ([...]), mikä suojaa alkuperäistä dataa tahattomilta muutoksilta.

Metodi deleteTask(id: number) poistaa tehtävän suodattamalla pois sen, jonka ID täsmää, ja päivittää listan.

Toinen tärkeä metodi on toggleTaskStatus(id: number). Se etsii tehtävän ID:n perusteella ja vaihtaa sen valmistumistilaa — jos tehtävä oli merkitty valmiiksi (true), siitä tulee keskeneräinen (false), ja päinvastoin.

Note
Huomio

Saatat tunnistaa suuren osan tästä logiikasta TaskListComponent-komponentistasi. Nyt kaikki on siirretty TaskService-palveluun, mikä selkeyttää komponenttejasi ja keskittää logiikan yhteen paikkaan.

Tämä palvelu toimii nyt perustana, jonka avulla komponenttisi voivat olla vuorovaikutuksessa tehtävälistan kanssa — ilman logiikan toistoa.

1. Miksi Angularissa luodaan palvelu?

2. Mitä providedIn: 'root' tarkoittaa @Injectable-koristeessa?

3. Miksi palautetaan [...this.tasks] eikä pelkästään this.tasks metodissa getTasks()?

question mark

Miksi Angularissa luodaan palvelu?

Select the correct answer

question mark

Mitä providedIn: 'root' tarkoittaa @Injectable-koristeessa?

Select the correct answer

question mark

Miksi palautetaan [...this.tasks] eikä pelkästään this.tasks metodissa getTasks()?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 2

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 3.13

bookOman Palvelun Luominen Angularissa

Pyyhkäise näyttääksesi valikon

Palvelun luominen

Angular tarjoaa kätevän CLI-komennon, jolla voit nopeasti luoda palvelun. Tämä komento luo tarvittavat tiedostot ja tuonnit:

Tämän komennon suorittamisen jälkeen Angular luo kaksi tiedostoa:

  • task.service.ts — varsinainen palvelutiedosto;

  • task.service.spec.ts — testitiedosto (voit poistaa tämän).

Tässä on task.service.ts-tiedoston alkuperäinen sisältö:

task-service.ts

task-service.ts

copy

@Injectable-koristelija ilmoittaa Angularille, että tämä palvelu voidaan injektoida muihin luokkiin.

providedIn: 'root' tarkoittaa, että Angular rekisteröi palvelun automaattisesti juurimoduuliin ja luo siitä yhden instanssin koko sovellukselle.

Note
Määritelmä

Singleton on suunnittelumalli, joka varmistaa, että luokalla on vain yksi instanssi ja tarjoaa globaalin pääsyn siihen.

Komponentti A, komponentti B tai mikä tahansa muu komponentti — kaikki saavat saman palvelun instanssin. Tämä on erittäin kätevää, koska voit tallentaa jaettua dataa (kuten tehtävälistan) ja välttää logiikan toiston.

Siksi palvelusta tulee tietyn sovelluksen logiikan tai datan yksittäinen totuuden lähde. Jos olet kiinnostunut, voit lukea lisää singleton-mallista tästä artikkelista.

Logiikan lisääminen palveluun

Seuraavaksi rakennetaan palvelun varsinainen logiikka. Palvelun tavoitteena on:

  • Tallentaa tehtävälista;

  • Palauttaa tehtävälista;

  • Poistaa tehtäviä;

  • Vaihtaa tehtävien valmistumistilaa.

Määritellään ensin, miltä tehtävä näyttää, luomalla TypeScript-rajapinta:

task-interface.ts

task-interface.ts

copy

Tämä rajapinta määrittelee selkeästi tehtävän rakenteen — siihen kuuluu id, otsikko ja valmistumistila. Et ole aiemmin käyttänyt rajapintoja, mutta tässä niiden lisääminen tekee koodista helpommin ymmärrettävää ja käsiteltävää.

Rakennetaan nyt palvelu, joka hallinnoi tehtävälistaasi:

task-service.ts

task-service.ts

copy

Tässä esimerkissä tehtävädata tallennetaan suoraan koodiin yksityiseen tasks-taulukkoon.

Jotta muut sovelluksen osat voivat käyttää tehtävälistaa, käytetään getTasks()-metodia. Se palauttaa kopion taulukosta käyttämällä spread-syntaksia ([...]), mikä suojaa alkuperäistä dataa tahattomilta muutoksilta.

Metodi deleteTask(id: number) poistaa tehtävän suodattamalla pois sen, jonka ID täsmää, ja päivittää listan.

Toinen tärkeä metodi on toggleTaskStatus(id: number). Se etsii tehtävän ID:n perusteella ja vaihtaa sen valmistumistilaa — jos tehtävä oli merkitty valmiiksi (true), siitä tulee keskeneräinen (false), ja päinvastoin.

Note
Huomio

Saatat tunnistaa suuren osan tästä logiikasta TaskListComponent-komponentistasi. Nyt kaikki on siirretty TaskService-palveluun, mikä selkeyttää komponenttejasi ja keskittää logiikan yhteen paikkaan.

Tämä palvelu toimii nyt perustana, jonka avulla komponenttisi voivat olla vuorovaikutuksessa tehtävälistan kanssa — ilman logiikan toistoa.

1. Miksi Angularissa luodaan palvelu?

2. Mitä providedIn: 'root' tarkoittaa @Injectable-koristeessa?

3. Miksi palautetaan [...this.tasks] eikä pelkästään this.tasks metodissa getTasks()?

question mark

Miksi Angularissa luodaan palvelu?

Select the correct answer

question mark

Mitä providedIn: 'root' tarkoittaa @Injectable-koristeessa?

Select the correct answer

question mark

Miksi palautetaan [...this.tasks] eikä pelkästään this.tasks metodissa getTasks()?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 2
some-alt