在自定义管道中应用现有管道
Apply existing pipe in a custom pipe
我有一个 Precision Pipe 可以给我所需的精度数字...但是,该管道不使用任何其他数字格式,如本地千位分隔符等。
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({ name: 'precision' })
export class PrecisionPipe implements PipeTransform {
transform(value: number | string, precision: number): string {
return typeof value === 'number' ? value.toFixed(precision) : value;
}
}
有没有办法在我的 Precision 管道中应用 'number' 管道来对其进行本地化?
知道
> 444444.5.toFixed(2)
'444444.50'
// I need "444 444.50"
一种可能性是使用 HTML
中的连续管道
<div>{{ myNumber | precision:myPrecision | number }}</div>
如果没有,我在我的 PrecisionPipe 中尝试了 DecimalPipe:
import { Pipe, PipeTransform } from '@angular/core';
import { DecimalPipe } from '@angular/common';
@Pipe({ name: 'precision' })
export class PrecisionPipe implements PipeTransform {
transform(
value: number | string,
precision: number,
locale?: string | undefined,
digitsInfo?: string | undefined,
): string | number | null {
let pipe = new DecimalPipe(locale ?? "en");
return isFinite(+value) ?
pipe.transform((+value).toFixed(precision), digitsInfo, locale)
: value;
}
}
唯一的“问题”是最后一个选项要求您明确设置管道中的当前语言...
我有一个 Precision Pipe 可以给我所需的精度数字...但是,该管道不使用任何其他数字格式,如本地千位分隔符等。
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({ name: 'precision' })
export class PrecisionPipe implements PipeTransform {
transform(value: number | string, precision: number): string {
return typeof value === 'number' ? value.toFixed(precision) : value;
}
}
有没有办法在我的 Precision 管道中应用 'number' 管道来对其进行本地化?
知道
> 444444.5.toFixed(2)
'444444.50'
// I need "444 444.50"
一种可能性是使用 HTML
中的连续管道<div>{{ myNumber | precision:myPrecision | number }}</div>
如果没有,我在我的 PrecisionPipe 中尝试了 DecimalPipe:
import { Pipe, PipeTransform } from '@angular/core';
import { DecimalPipe } from '@angular/common';
@Pipe({ name: 'precision' })
export class PrecisionPipe implements PipeTransform {
transform(
value: number | string,
precision: number,
locale?: string | undefined,
digitsInfo?: string | undefined,
): string | number | null {
let pipe = new DecimalPipe(locale ?? "en");
return isFinite(+value) ?
pipe.transform((+value).toFixed(precision), digitsInfo, locale)
: value;
}
}
唯一的“问题”是最后一个选项要求您明确设置管道中的当前语言...