Angular 输入时角度十进制管道向上舍入,导致错误的值
我使用了十进制角度管道,如下所示:Angular 输入时角度十进制管道向上舍入,导致错误的值,angular,Angular,我使用了十进制角度管道,如下所示: <input pInputText type="number" [ngModel]="factor | number: '.2'" (ngModelChange)="factor=$event"> 当我的页面加载时,它正在工作。我在.ts文件中将factor设置为50,它在UI上显示为50.00。然而,当我删除该值并尝试键入77时,当我输入第一个数字时,该值为7.00,第二个数字最终为7.007。所有的价值观都是如此。我不希望它那样做。我做错
<input pInputText type="number" [ngModel]="factor | number: '.2'" (ngModelChange)="factor=$event">
当我的页面加载时,它正在工作。我在.ts文件中将factor设置为50,它在UI上显示为50.00。然而,当我删除该值并尝试键入77时,当我输入第一个数字时,该值为7.00,第二个数字最终为7.007。所有的价值观都是如此。我不希望它那样做。我做错什么了吗
StackBlitz for it位于:此行为是因为当用户第一次开始键入时,管道会触发。这是因为
ngModelChange
事件设置了因子
值。如果您希望格式化数字,我建议使用blur
事件,该事件将在用户离开字段后格式化字段
<input pInputText type="number" [ngModel]="factor | number: '.2'" (blur)="factor=$event">
此行为是因为当用户第一次开始键入时,管道会触发。这是因为
ngModelChange
事件设置了因子
值。如果您希望格式化数字,我建议使用blur
事件,该事件将在用户离开字段后格式化字段
<input pInputText type="number" [ngModel]="factor | number: '.2'" (blur)="factor=$event">
这些管道不能很好地处理输入,因为输入时值会发生变化,我相信它们是用于静态数字格式的。可以考虑更新模糊值:
<input
type="number"
[ngModel]="factor | number: '.2'"
[ngModelOptions]="{updateOn: 'blur'}"
(ngModelChange)="factor=$event">
这些管道不能很好地处理输入,因为输入时值会发生变化,我相信它们是用于静态数字格式的。可以考虑更新模糊值:
<input
type="number"
[ngModel]="factor | number: '.2'"
[ngModelOptions]="{updateOn: 'blur'}"
(ngModelChange)="factor=$event">
如果您使用Angular 5+查看我的答案:)Angular有内置的表单钩子用于何时更新控制值。@pokrishka-非常好。如果您使用Angular 5+查看我的答案:)Angular有内置表单钩子用于何时更新控制值。@pokrishka-非常好。