我必须用两位小数和意大利格式来格式化数字:
1.111.111,00
我有两个绑定的输入:
<input type="number" [ngModel]="praticaSelezionata.Importo | number:'1.2-2':'it-IT'"
(ngModelChange)="praticaSelezionata.Importo=$event" formControlName="importo"
[disabled]="formDisabilitato"
class="input-sm form-control mr-sm-4 inputRightFormat mb-sm-1"
style="height:34px;width:40%;margin-right:3px !important" id="importo" disabled>
在app.module.ts
中,我设置了:
import localeIt from '@angular/common/locales/it';
import { registerLocaleData } from '@angular/common';
registerLocaleData(localeIt);
providers:[{ provide: LOCALE_ID, useValue: 'it-IT'}...
但是当我在输入字段中输入数字时,我会收到此错误
InvalidPipeArgument: '10,13 is not a number' for pipe 'DecimalPipe'
和
ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'undefined: 10.1311'. Current value: 'undefined: 10,13'
和警告
The specified value "10,13" is not a valid number. The value must match to the following regular expression: -?(\d+|\d+\.\d+|\.\d+)([eE][-+]?\d+)?
我是新手,可以帮我吗?谢谢
答案 0 :(得分:0)
值praticaSelezionata.Importo
是一个值为“ 10,13”的字符串。这不是数字。您可以做几件事:
更改获取数据的方式。我怀疑有一些API。这需要返回10.13
,而不是"10,13"
。
收到数据后解析该值,以将字符串逗号数字转换为普通数字。
在号码管道前面使用管道:
@Pipe({
name: 'stringNr'
})
export class StringNrPipe implements PipeTransform {
transform(stringNr: string | number): number {
if (typeof stringNr === 'string') {
return Number.parseFloat(stringNr.replace(',', '.')) || 0
}
return stringNr || 0;
}
}