Angular предоставляет мощный механизм для трансформации данных в шаблонах с помощью пайпов (pipes). Пайпы позволяют преобразовывать значения прямо в HTML, минимизируя необходимость дополнительной логики в компонентах.
Основные встроенные пайпы:
DatePipe — форматирование дат.
{{ today | date:'fullDate' }}
Поддерживает множество форматов, включая 'short',
'medium', 'longDate' и пользовательские строки
формата.
UpperCasePipe / LowerCasePipe — изменение регистра строк.
{{ 'angular' | uppercase }} <!-- ANGULAR -->
{{ 'ANGULAR' | lowercase }} <!-- angular -->CurrencyPipe — форматирование чисел как валюты.
{{ 1234.56 | currency:'USD':'symbol' }}DecimalPipe / PercentPipe — работа с числами и процентами.
{{ 0.25 | percent }} <!-- 25% -->
{{ 1234.567 | number:'1.2-2' }} <!-- 1,234.57 -->Создание кастомных пайпов:
Angular позволяет создавать собственные пайпы для специфических задач. Например, фильтрация массива по условию:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({ name: 'filterBy' })
export class FilterByPipe implements PipeTransform {
transform(items: any[], field: string, value: any): any[] {
return items.filter(item => item[field] === value);
}
}
Использование:
<li *ngFor="let user of users | filterBy:'role':'admin'">{{ user.name }}</li>
Особенности трансформации данных:
Пайпы поддерживают чистые (pure) и нечистые (impure) варианты. Чистые вызываются только при изменении входных данных, нечистые — при каждом цикле обнаружения изменений.
Для оптимизации производительности рекомендуется использовать чистые пайпы, особенно при работе с массивами и объектами.
Комбинация нескольких пайпов позволяет создавать сложные цепочки трансформаций:
{{ amount | currency:'EUR':'symbol':'1.2-2' | uppercase }}Интеграция с формами и сервисами:
Пайпы не ограничиваются шаблонами. Их можно использовать в
компонентах и сервисах через метод transform, что
обеспечивает единообразие логики преобразования данных.
Использование пайпов и временных функций в Angular позволяет создавать как визуально плавные интерфейсы, так и структурированное представление данных, поддерживая чистоту кода и масштабируемость приложений.