【发布时间】:2020-05-04 00:52:01
【问题描述】:
此方法用于为输入添加千位分隔符。它将删除非数字字符,然后 pip 将在视图中添加分隔符。 但是当输入类似于“ 12hy ”时,它不起作用。如果输入类似于“ 12hy6 ”,它将按预期给出输出,例如“ 126 ”。
我不明白什么?在调试时实际上模型会按预期更改。但是视图是相同的。
在模型代码是这样的->
public onInputChange(event: string , id: any): any {
switch (id) {
case 'mgtFeeFromValue': {
this.mgtFeeFromValue = this.changeText(event);
console.log(this.mgtFeeFromValue);
break;
}
default: {
this.loggerService.logError('Cannot find case in switch statement line : 730');
break;
}
}
}
public changeText(str: string): any {
if (typeof str === 'string') {
const formattedNumber = parseFloat(str.replace(/\D/g, ''));
return formattedNumber;
} else if (typeof str === 'number') {
return str;
}
}
在视图中->
<input
[ngModel]="mgtFeeFromValue | number:'1.0-5'"
(ngModelChange)="onInputChange($event ,'mgtFeeFromValue')"
maxlength="8"
class="reset-input-style w-100 text-right"
>
这是一个工作示例 - >
https://stackblitz.com/edit/angular-g5l4ra?embed=1&file=src/app/app.component.ts
【问题讨论】:
-
你能分享一下工作演示吗?
-
如果输入是“12hy”,输出应该是“12”吧?
-
是的,它必须是
-
我找到了一种替代方法来阻止非数字输入并添加千位分隔符,这是 stackblitz stackblitz.com/edit/angular-g5l4ra?embed=1&file=src/app/…
标签: javascript angular typescript data-binding