Створення Користувацького Пайпа в Angular
Свайпніть щоб показати меню
Іноді вбудованих пайпів Angular недостатньо. Може виникнути потреба у специфічному перетворенні, яке необхідне саме для вашого застосунку. У такому випадку можна створити власний кастомний пайп.
Наприклад, у вас є список завдань, і кожне завдання може бути виконаним або невиконаним. Щоб зробити виконані завдання більш помітними, потрібно автоматично додавати емодзі ✅ до їхніх заголовків. Замість того, щоб прописувати цю логіку у кожному шаблоні, можна створити для цього окремий пайп.
Як створити власний пайп
Щоб згенерувати кастомний пайп в Angular, скористайтеся наступною командою CLI. Назвемо його formatTitle, оскільки його завдання — форматувати заголовок завдання залежно від статусу виконання:
Ця команда створить два файли:
-
format-title.pipe.ts— логіка пайпа; -
format-title.pipe.spec.ts— файл модульних тестів (можна видалити, якщо тестування зараз не потрібне).
Коли Angular створює пайп, він виглядає приблизно так:
pipe.ts
Ось що робить цей код:
-
Клас
FormatTitlePipeреалізує інтерфейсPipeTransform, що гарантує наявність методуtransformу пайпі; -
Метод
transformприймає значення (вхідні дані) та необов'язкові аргументи й повертає перетворений результат. На цьому етапі він просто повертає вхідне значення без змін; -
Назва пайпа (
formatTitle) визначається у декораторі@Pipe— саме цю назву ви будете використовувати в шаблоні.
Зараз пайп існує, але ще не виконує жодної логіки. Далі додамо необхідну функціональність.
Реалізація користувацького пайпу
Необхідно додати емодзі ✅ до заголовка залежно від статусу виконання завдання (task.completed). Оновіть пайп, щоб застосувати нашу користувацьку логіку форматування:
pipe.ts
Метод transform приймає два аргументи:
-
value— заголовок завдання; -
completed— булевий параметр, що вказує, чи виконано завдання.
Якщо завдання виконано (true), до кінця заголовка додається емодзі ✅. В іншому випадку повертається незмінений заголовок.
Використання пайпа в шаблоні
Щоб використати пайп у вашому Angular-шаблоні, застосуйте його за допомогою символу пайпа |:
template.html
Що тут відбувається:
-
task.title— значення, яке передається в пайп; -
formatTitle:task.completedзастосовує пайп і передає прапорецьcompleted; -
Заголовок міститиме емодзі ✅ або ні, залежно від статусу завдання.
Використання пайпів таким чином допомагає зберігати шаблони чистими й читабельними, а також переносить логіку форматування у багаторазово використовуваний і тестований код.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат