Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Створення Власного Сервісу в Angular | Services and Dependency Injection in Angular
Вступ до Angular

bookСтворення Власного Сервісу в Angular

Створення сервісу

Angular надає зручну команду CLI для швидкого створення сервісу, яка автоматично налаштовує необхідні файли та імпорти:

Після виконання цієї команди Angular створює два файли:

  • task.service.ts — основний файл сервісу;

  • task.service.spec.ts — файл для тестування (можна видалити).

Ось початковий вміст task.service.ts:

task-service.ts

task-service.ts

copy

@Injectable декоратор повідомляє Angular, що цей сервіс може бути впроваджений в інші класи.

Частина providedIn: 'root' означає, що Angular автоматично зареєструє сервіс у кореневому модулі та створить єдиний екземпляр для всього додатку.

Note
Визначення

Сінглтон — це шаблон проєктування, який гарантує, що клас має лише один екземпляр і забезпечує глобальну точку доступу до нього.

Компонент A, компонент B або будь-який інший компонент — усі вони отримають один і той самий екземпляр сервісу. Це дуже зручно, оскільки можна зберігати спільні дані (наприклад, список завдань) і уникати дублювання логіки.

Саме тому сервіс стає єдиним джерелом істини для певної частини логіки або даних вашого додатку. Якщо цікаво, можна дізнатися більше про шаблон сінглтон у цій статті.

Додавання логіки до сервісу

Переходимо до створення логіки для вашого сервісу. Ось що він має виконувати:

  • Зберігати список завдань;

  • Повернути список завдань;

  • Видаляти завдання;

  • Змінювати статус виконання завдань.

Спочатку визначимо, як виглядає завдання, створивши інтерфейс TypeScript:

task-interface.ts

task-interface.ts

copy

Цей інтерфейс чітко визначає структуру завдання — він містить id, назву та статус виконання. Ви ще не використовували інтерфейси, але додавання його тут робить код зрозумілішим і зручнішим для роботи.

Тепер створимо сервіс, який керує вашим списком завдань:

task-service.ts

task-service.ts

copy

У цьому прикладі дані завдань зберігаються безпосередньо в коді у приватному масиві tasks.

Щоб надати іншим частинам застосунку доступ до списку завдань, використовується метод getTasks(). Він повертає копію масиву за допомогою синтаксису розгортання ([...]), що допомагає захистити оригінальні дані від випадкових змін.

Метод deleteTask(id: number) видаляє завдання, відфільтровуючи те, яке має відповідний ID, та оновлює список.

Ще один важливий метод — toggleTaskStatus(id: number). Він знаходить завдання за його ID та перемикає статус виконання: якщо завдання було позначене як виконане (true), воно стає невиконаним (false), і навпаки.

Note
Примітка

Ви можете впізнати багато цієї логіки зі свого TaskListComponent. Тепер усе це перенесено до TaskService, що допомагає зробити компоненти чистішими та зберігати логіку в одному місці.

Ця служба тепер є основою, яка дозволяє вашим компонентам взаємодіяти зі списком завдань — без дублювання логіки.

1. Чому створюють службу в Angular?

2. Що означає providedIn: 'root' у декораторі @Injectable?

3. Чому у методі [...this.tasks] повертається this.tasks, а не просто getTasks()?

question mark

Чому створюють службу в Angular?

Select the correct answer

question mark

Що означає providedIn: 'root' у декораторі @Injectable?

Select the correct answer

question mark

Чому у методі [...this.tasks] повертається this.tasks, а не просто getTasks()?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you show me the code for the Task interface and service methods?

Why do we return a copy of the tasks array instead of the original?

How do components use this service to access or modify the task list?

Awesome!

Completion rate improved to 3.13

bookСтворення Власного Сервісу в Angular

Свайпніть щоб показати меню

Створення сервісу

Angular надає зручну команду CLI для швидкого створення сервісу, яка автоматично налаштовує необхідні файли та імпорти:

Після виконання цієї команди Angular створює два файли:

  • task.service.ts — основний файл сервісу;

  • task.service.spec.ts — файл для тестування (можна видалити).

Ось початковий вміст task.service.ts:

task-service.ts

task-service.ts

copy

@Injectable декоратор повідомляє Angular, що цей сервіс може бути впроваджений в інші класи.

Частина providedIn: 'root' означає, що Angular автоматично зареєструє сервіс у кореневому модулі та створить єдиний екземпляр для всього додатку.

Note
Визначення

Сінглтон — це шаблон проєктування, який гарантує, що клас має лише один екземпляр і забезпечує глобальну точку доступу до нього.

Компонент A, компонент B або будь-який інший компонент — усі вони отримають один і той самий екземпляр сервісу. Це дуже зручно, оскільки можна зберігати спільні дані (наприклад, список завдань) і уникати дублювання логіки.

Саме тому сервіс стає єдиним джерелом істини для певної частини логіки або даних вашого додатку. Якщо цікаво, можна дізнатися більше про шаблон сінглтон у цій статті.

Додавання логіки до сервісу

Переходимо до створення логіки для вашого сервісу. Ось що він має виконувати:

  • Зберігати список завдань;

  • Повернути список завдань;

  • Видаляти завдання;

  • Змінювати статус виконання завдань.

Спочатку визначимо, як виглядає завдання, створивши інтерфейс TypeScript:

task-interface.ts

task-interface.ts

copy

Цей інтерфейс чітко визначає структуру завдання — він містить id, назву та статус виконання. Ви ще не використовували інтерфейси, але додавання його тут робить код зрозумілішим і зручнішим для роботи.

Тепер створимо сервіс, який керує вашим списком завдань:

task-service.ts

task-service.ts

copy

У цьому прикладі дані завдань зберігаються безпосередньо в коді у приватному масиві tasks.

Щоб надати іншим частинам застосунку доступ до списку завдань, використовується метод getTasks(). Він повертає копію масиву за допомогою синтаксису розгортання ([...]), що допомагає захистити оригінальні дані від випадкових змін.

Метод deleteTask(id: number) видаляє завдання, відфільтровуючи те, яке має відповідний ID, та оновлює список.

Ще один важливий метод — toggleTaskStatus(id: number). Він знаходить завдання за його ID та перемикає статус виконання: якщо завдання було позначене як виконане (true), воно стає невиконаним (false), і навпаки.

Note
Примітка

Ви можете впізнати багато цієї логіки зі свого TaskListComponent. Тепер усе це перенесено до TaskService, що допомагає зробити компоненти чистішими та зберігати логіку в одному місці.

Ця служба тепер є основою, яка дозволяє вашим компонентам взаємодіяти зі списком завдань — без дублювання логіки.

1. Чому створюють службу в Angular?

2. Що означає providedIn: 'root' у декораторі @Injectable?

3. Чому у методі [...this.tasks] повертається this.tasks, а не просто getTasks()?

question mark

Чому створюють службу в Angular?

Select the correct answer

question mark

Що означає providedIn: 'root' у декораторі @Injectable?

Select the correct answer

question mark

Чому у методі [...this.tasks] повертається this.tasks, а не просто getTasks()?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 2
some-alt