import { Component} from '@angular/core';
@Component({
selector: 'my-app',
template: `Без форматирования: {{myDate}}
С форматированием: {{myDate | date}}`
})
export class AppComponent {
myDate = new Date(1961, 3, 12);
}
Здесь создается дата, которая дважды выводится в шаблоне. Во втором случае к дате применяется форматирование с помощью класса DatePipe.\\
{{ :angular:angular2:8.1.png |}}
====Встроенные pipes====
В Angular есть ряд встроенных pipes. Основные из них:
* **CurrencyPipe**: форматирует валюту
* **PercentPipe**: форматирует проценты
* **UpperCasePipe**: переводит строку в верхний регистр
* **LowerCasePipe**: переводит строку в нижний регистр
* **DatePipe**: форматирует дату
* **DecimalPipe**: задает формат числа
* **SlicePipe**: обрезает строку
При применении классов суффикс Pipe отбрасывается (за исключением DecimalPipe - для его применения используется название "number"):
import { Component} from '@angular/core';
@Component({
selector: 'my-app',
template: `{{welcome | uppercase}}
{{welcome | lowercase}}
{{persentage | percent}}
{{persentage | currency}}`
})
export class AppComponent {
welcome: string = "Hello World!";
persentage: number = 0.14;
}
{{ :angular:angular2:8.2.png |}}
====Параметры в pipes====
Pipes могут получать параметры. Например, пайп SlicePipe, который обрезает строку, может получать в качестве параметра, начальный и конечный индексы подстроки, которую надо вырезать:
import { Component} from '@angular/core';
@Component({
selector: 'my-app',
template: `{{welcome | slice:3}}
{{welcome | slice:6:11}}`
})
export class AppComponent {
welcome: string = "Hello World!";
}
Все параметры в пайп передаются через двоеточие. В данном случае slice:6:11 вырезает подстроку, начиная с 6 до 11 индекса. При этом, если начала выреза строки обязательно передавать, то конечный индекс необязателен. В этом случае в качестве конечного индекса выступает конец строки.
{{ :angular:angular2:8.3.png |}}
====Форматирование дат====
DatePipe в качестве параметра может принимать шаблон даты:
import { Component} from '@angular/core';
@Component({
selector: 'my-app',
template: `{{myDate | date:"dd/MM/yyyy"}}`
})
export class AppComponent {
myDate = Date.now();
}
====Форматирование чисел====
DecimalPipe в качестве параметра принимает формат числа в виде шаблона:
{{ value | number [ : digitsInfo [ : locale ] ] }}
* **value**: само выводимое значение
* **digitsInfo**: строка в формате "minIntegerDigits.minFractionDigits-maxFractionDigits", где
* * **minIntegerDigits** - минимальное количество цифр в целой части
* * **minFractionDigits** - минимальное количество цифр в дробной части
* * **maxFractionDigits** - максимальное количество цифр в дробной части
* **locale**: код применяемой культуры
import { Component} from '@angular/core';
@Component({
selector: 'my-app',
template: `{{pi | number:'2.1-2'}}
{{pi | number:'3.5-5'}}`
})
export class AppComponent {
pi: number = 3.1415;
}
{{ :angular:angular2:8.4.png |}}
====Форматирование валюты====
CurrencyPipe может принимать ряд параметров:
{{ value | currency [ : currencyCode [ : display [ : digitsInfo [ : locale ] ] ] ] }}
* **value**: выводимая сумма
* **currencyCode**: код валюты согласно спецификации ISO 4217. Если не указан, то по умолчанию применяется USD
* **display**: указывает, как отображать символ валюты. Может принимать следующие значения:
* * **code**: отображает код валюты (например, USD)
* * **symbol** (значение по умолчанию): отображает символ валюты (например, $)
* * **symbol-narrow**: некоторые страны используют в качестве символа валюты несколько символов, например, канадский доллар - CA$, данный параметр позволяет получить собственно символ валюты - $
* * **string**: отображает произвольную строку
* **digitsInfo**: формат числа, который применяется в DecimalPipe
* **locale**: код используемой локали
import { Component} from '@angular/core';
@Component({
selector: 'my-app',
template: `
{{money | currency:'RUB':'code'}}
{{money | currency:'RUB':'symbol-narrow'}}
{{money | currency:'RUB':'symbol':'1.1-1'}}
{{money | currency:'RUB':'symbol-narrow':'1.1-1'}}
{{money | currency:'RUB':'тока седня по цене '}}`
})
export class AppComponent {
money: number = 23.45;
}
{{ :angular:angular2:8.5.png |}}
====Цепочки pipes====
Вполне возможно, что мы захотим применить сразу несколько pipes к одному значению, тогда мы можем составлять цепочки выражений, разделенные вертикальной чертой:
import { Component} from '@angular/core';
@Component({
selector: 'my-app',
template: `{{message | slice:6:11 | uppercase}}`
})
export class AppComponent {
message = "Hello World!";
}