Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Een Aangepaste Service Maken in Angular | Services and Dependency Injection in Angular
Introductie tot Angular

bookEen Aangepaste Service Maken in Angular

Een service aanmaken

Angular biedt een handige CLI-opdracht om snel een service te genereren, waarmee de benodigde bestanden en imports worden aangemaakt:

Na het uitvoeren van deze opdracht maakt Angular twee bestanden aan:

  • task.service.ts — het daadwerkelijke servicebestand;

  • task.service.spec.ts — een testbestand (dit kun je verwijderen).

Hier is de initiële inhoud van task.service.ts:

task-service.ts

task-service.ts

copy

De @Injectable decorator geeft aan Angular aan dat deze service kan worden geïnjecteerd in andere klassen.

Het gedeelte providedIn: 'root' betekent dat Angular de service automatisch registreert in de rootmodule en er één enkele instantie van maakt voor de gehele applicatie.

Note
Definitie

Singleton is een ontwerppatroon dat ervoor zorgt dat een klasse slechts één instantie heeft en een wereldwijd toegangspunt biedt.

Component A, Component B, of een andere component — allemaal krijgen ze dezelfde instantie van de service. Dit is zeer handig omdat je gedeelde data (zoals een takenlijst) kunt opslaan en het dupliceren van logica voorkomt.

Daarom wordt een service de enige bron van waarheid voor een specifiek deel van de logica of data van je applicatie. Als je nieuwsgierig bent, kun je meer leren over het singleton-patroon in dit artikel.

Logica toevoegen aan de service

Laten we verdergaan met het daadwerkelijk opbouwen van de logica voor je service. Dit is wat je wilt dat de service doet:

  • Een lijst met taken opslaan;

  • De takenlijst retourneren;

  • Taken verwijderen;

  • De voltooiingsstatus van taken omzetten.

Laten we eerst definiëren hoe een taak eruitziet door een TypeScript-interface te maken:

task-interface.ts

task-interface.ts

copy

Deze interface helpt om de structuur van een taak duidelijk te definiëren — het bevat een id, een titel en een voltooid-status. Je hebt nog niet eerder interfaces gebruikt, maar het toevoegen van een interface maakt de code eenvoudiger te begrijpen en mee te werken.

Laten we nu de service bouwen die je takenlijst beheert:

task-service.ts

task-service.ts

copy

In dit voorbeeld worden de taakgegevens direct in de code opgeslagen in een privé tasks array.

Om andere delen van de applicatie toegang te geven tot de takenlijst, wordt de methode getTasks() gebruikt. Deze retourneert een kopie van de array met behulp van de spread-syntax ([...]), wat helpt om de originele gegevens te beschermen tegen onbedoelde wijzigingen.

De methode deleteTask(id: number) verwijdert een taak door degene met het overeenkomende ID eruit te filteren en de lijst bij te werken.

Een andere belangrijke methode is toggleTaskStatus(id: number). Deze zoekt de taak op basis van het ID en schakelt de voltooiingsstatus om — als de taak als voltooid (true) was gemarkeerd, wordt deze onvoltooid (false), en omgekeerd.

Note
Opmerking

Veel van deze logica herken je misschien uit je TaskListComponent. Nu is alles verplaatst naar TaskService, wat helpt om je componenten op te schonen en je logica op één plek te houden.

Deze service vormt nu de basis waarmee je componenten kunnen communiceren met de takenlijst — zonder logica te dupliceren.

1. Waarom maak je een service in Angular?

2. Wat betekent providedIn: 'root' in de @Injectable decorator?

3. Waarom retourneer je [...this.tasks] in plaats van alleen this.tasks in getTasks()?

question mark

Waarom maak je een service in Angular?

Select the correct answer

question mark

Wat betekent providedIn: 'root' in de @Injectable decorator?

Select the correct answer

question mark

Waarom retourneer je [...this.tasks] in plaats van alleen this.tasks in getTasks()?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 2

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 3.13

bookEen Aangepaste Service Maken in Angular

Veeg om het menu te tonen

Een service aanmaken

Angular biedt een handige CLI-opdracht om snel een service te genereren, waarmee de benodigde bestanden en imports worden aangemaakt:

Na het uitvoeren van deze opdracht maakt Angular twee bestanden aan:

  • task.service.ts — het daadwerkelijke servicebestand;

  • task.service.spec.ts — een testbestand (dit kun je verwijderen).

Hier is de initiële inhoud van task.service.ts:

task-service.ts

task-service.ts

copy

De @Injectable decorator geeft aan Angular aan dat deze service kan worden geïnjecteerd in andere klassen.

Het gedeelte providedIn: 'root' betekent dat Angular de service automatisch registreert in de rootmodule en er één enkele instantie van maakt voor de gehele applicatie.

Note
Definitie

Singleton is een ontwerppatroon dat ervoor zorgt dat een klasse slechts één instantie heeft en een wereldwijd toegangspunt biedt.

Component A, Component B, of een andere component — allemaal krijgen ze dezelfde instantie van de service. Dit is zeer handig omdat je gedeelde data (zoals een takenlijst) kunt opslaan en het dupliceren van logica voorkomt.

Daarom wordt een service de enige bron van waarheid voor een specifiek deel van de logica of data van je applicatie. Als je nieuwsgierig bent, kun je meer leren over het singleton-patroon in dit artikel.

Logica toevoegen aan de service

Laten we verdergaan met het daadwerkelijk opbouwen van de logica voor je service. Dit is wat je wilt dat de service doet:

  • Een lijst met taken opslaan;

  • De takenlijst retourneren;

  • Taken verwijderen;

  • De voltooiingsstatus van taken omzetten.

Laten we eerst definiëren hoe een taak eruitziet door een TypeScript-interface te maken:

task-interface.ts

task-interface.ts

copy

Deze interface helpt om de structuur van een taak duidelijk te definiëren — het bevat een id, een titel en een voltooid-status. Je hebt nog niet eerder interfaces gebruikt, maar het toevoegen van een interface maakt de code eenvoudiger te begrijpen en mee te werken.

Laten we nu de service bouwen die je takenlijst beheert:

task-service.ts

task-service.ts

copy

In dit voorbeeld worden de taakgegevens direct in de code opgeslagen in een privé tasks array.

Om andere delen van de applicatie toegang te geven tot de takenlijst, wordt de methode getTasks() gebruikt. Deze retourneert een kopie van de array met behulp van de spread-syntax ([...]), wat helpt om de originele gegevens te beschermen tegen onbedoelde wijzigingen.

De methode deleteTask(id: number) verwijdert een taak door degene met het overeenkomende ID eruit te filteren en de lijst bij te werken.

Een andere belangrijke methode is toggleTaskStatus(id: number). Deze zoekt de taak op basis van het ID en schakelt de voltooiingsstatus om — als de taak als voltooid (true) was gemarkeerd, wordt deze onvoltooid (false), en omgekeerd.

Note
Opmerking

Veel van deze logica herken je misschien uit je TaskListComponent. Nu is alles verplaatst naar TaskService, wat helpt om je componenten op te schonen en je logica op één plek te houden.

Deze service vormt nu de basis waarmee je componenten kunnen communiceren met de takenlijst — zonder logica te dupliceren.

1. Waarom maak je een service in Angular?

2. Wat betekent providedIn: 'root' in de @Injectable decorator?

3. Waarom retourneer je [...this.tasks] in plaats van alleen this.tasks in getTasks()?

question mark

Waarom maak je een service in Angular?

Select the correct answer

question mark

Wat betekent providedIn: 'root' in de @Injectable decorator?

Select the correct answer

question mark

Waarom retourneer je [...this.tasks] in plaats van alleen this.tasks in getTasks()?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 2
some-alt