Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Створення Власного Пайпа в Angular | Mastering Angular Directives and Pipes
Вступ до 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

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

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