Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Створення Користувацького Пайпа в Angular | Опанування Директив і Пайпів Angular
Вступ до Angular

bookСтворення Користувацького Пайпа в Angular

Іноді вбудованих пайпів Angular недостатньо. Може виникнути потреба у специфічному перетворенні, яке необхідне саме для вашого застосунку. У такому випадку можна створити власний кастомний пайп.

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

Як створити власний пайп

Щоб згенерувати кастомний пайп в Angular, скористайтеся наступною командою CLI. Назвемо його formatTitle, оскільки його завдання — форматувати заголовок завдання залежно від статусу виконання:

Ця команда створить два файли:

  • format-title.pipe.ts — логіка пайпа;

  • format-title.pipe.spec.ts — файл модульних тестів (можна видалити, якщо тестування зараз не потрібне).

Коли Angular створює пайп, він виглядає приблизно так:

pipe.ts

pipe.ts

copy

Ось що робить цей код:

  • Клас FormatTitlePipe реалізує інтерфейс PipeTransform, що гарантує наявність методу transform у пайпі;

  • Метод transform приймає значення (вхідні дані) та необов'язкові аргументи й повертає перетворений результат. На цьому етапі він просто повертає вхідне значення без змін;

  • Назва пайпа (formatTitle) визначається у декораторі @Pipe — саме цю назву ви будете використовувати в шаблоні.

Зараз пайп існує, але ще не виконує жодної логіки. Далі додамо необхідну функціональність.

Реалізація користувацького пайпу

Необхідно додати емодзі ✅ до заголовка залежно від статусу виконання завдання (task.completed). Оновіть пайп, щоб застосувати нашу користувацьку логіку форматування:

pipe.ts

pipe.ts

copy

Метод transform приймає два аргументи:

  • value — заголовок завдання;

  • completed — булевий параметр, що вказує, чи виконано завдання.

Якщо завдання виконано (true), до кінця заголовка додається емодзі ✅. В іншому випадку повертається незмінений заголовок.

Використання пайпа в шаблоні

Щоб використати пайп у вашому Angular-шаблоні, застосуйте його за допомогою символу пайпа |:

template.html

template.html

copy

Що тут відбувається:

  • task.title — значення, яке передається в пайп;

  • formatTitle:task.completed застосовує пайп і передає прапорець completed;

  • Заголовок міститиме емодзі ✅ або ні, залежно від статусу завдання.

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

question mark

Що робить користувацький пайп formatTitle?

Select the correct answer

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

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

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

Секція 3. Розділ 6

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Suggested prompts:

Can you show me the code for the custom pipe implementation?

How do I use this custom pipe in my Angular template?

What are some other use cases for custom pipes in Angular?

Awesome!

Completion rate improved to 3.13

bookСтворення Користувацького Пайпа в Angular

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

Іноді вбудованих пайпів Angular недостатньо. Може виникнути потреба у специфічному перетворенні, яке необхідне саме для вашого застосунку. У такому випадку можна створити власний кастомний пайп.

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

Як створити власний пайп

Щоб згенерувати кастомний пайп в Angular, скористайтеся наступною командою CLI. Назвемо його formatTitle, оскільки його завдання — форматувати заголовок завдання залежно від статусу виконання:

Ця команда створить два файли:

  • format-title.pipe.ts — логіка пайпа;

  • format-title.pipe.spec.ts — файл модульних тестів (можна видалити, якщо тестування зараз не потрібне).

Коли Angular створює пайп, він виглядає приблизно так:

pipe.ts

pipe.ts

copy

Ось що робить цей код:

  • Клас FormatTitlePipe реалізує інтерфейс PipeTransform, що гарантує наявність методу transform у пайпі;

  • Метод transform приймає значення (вхідні дані) та необов'язкові аргументи й повертає перетворений результат. На цьому етапі він просто повертає вхідне значення без змін;

  • Назва пайпа (formatTitle) визначається у декораторі @Pipe — саме цю назву ви будете використовувати в шаблоні.

Зараз пайп існує, але ще не виконує жодної логіки. Далі додамо необхідну функціональність.

Реалізація користувацького пайпу

Необхідно додати емодзі ✅ до заголовка залежно від статусу виконання завдання (task.completed). Оновіть пайп, щоб застосувати нашу користувацьку логіку форматування:

pipe.ts

pipe.ts

copy

Метод transform приймає два аргументи:

  • value — заголовок завдання;

  • completed — булевий параметр, що вказує, чи виконано завдання.

Якщо завдання виконано (true), до кінця заголовка додається емодзі ✅. В іншому випадку повертається незмінений заголовок.

Використання пайпа в шаблоні

Щоб використати пайп у вашому Angular-шаблоні, застосуйте його за допомогою символу пайпа |:

template.html

template.html

copy

Що тут відбувається:

  • task.title — значення, яке передається в пайп;

  • formatTitle:task.completed застосовує пайп і передає прапорець completed;

  • Заголовок міститиме емодзі ✅ або ні, залежно від статусу завдання.

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

question mark

Що робить користувацький пайп formatTitle?

Select the correct answer

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

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

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

Секція 3. Розділ 6
some-alt