В дополнение к ответу от @PoulKruijt мы могли видеть, что JsonPipe
- это функция преобразования с одной строкой.
transform(value: any): string {
return JSON.stringify(value, null, 2);
}
Итак, мы могли бы написать собственный канал с аргументом replacer
в функции JSON.stringify()
.
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'jsonDecimal'
})
export class JsonDecimalPipe implements PipeTransform {
transform(value: any, length?: number): any {
return JSON.stringify(
value,
(key: any, value: any) => {
if (typeof value === 'number') {
return Number(value).toFixed(length);
} else {
return value;
}
},
2);
}
}
Пример 1
Затем вы можете указать количество десятичных места, которые вам нужно отобразить в шаблоне.
<div>{{ data | jsonDecimal:1 }}</div>
будет печатать числа с одним десятичным знаком
Вывод шаблона
{ "eoiStatistics": [ { "dateRange": { "explicitStartDate": "1997-01-01T00:00:00", "explicitEndDate": "2019-07-01T00:00:00" }, "outstandingApplicationCount": "0.0", "pendingApplicationCount": "24.0", "approvedApplicationCount": "0.0", "declinedApplicationCount": "0.0", "closedApplicationCount": "0.0" } ] }
Пример 2
Вы также можете указать больше десятичных чисел, если вам нужно добавить больше нулей в конце.
<div>{{ data | jsonDecimal:4 }}</div>
напечатает
{ "eoiStatistics": [ { "dateRange": { "explicitStartDate": "1997-01-01T00:00:00", "explicitEndDate": "2019-07-01T00:00:00" }, "outstandingApplicationCount": "0.0000", "pendingApplicationCount": "24.0000", "approvedApplicationCount": "0.0000", "declinedApplicationCount": "0.0000", "closedApplicationCount": "0.0000" } ] }