【发布时间】:2021-01-26 09:00:58
【问题描述】:
这是我的组件的 TS 和 HTML 文件:
<input type="text" [ngModel]="value" (ngModelChange)="setValue($event)">
value: string;
setValue(value: string) {
const pattern = /[^0-9]/g;
this.value = value.replace(pattern, '');
console.log(this.value); // <- When value is 123a, it puts 123 correctly
}
此处添加 Stackblitz:
https://stackblitz.com/edit/angular-ng-model-number
它是替换值中的任何非数字字母。但是输入元素没有更新。
所以如果我输入abcd,输入元素应该是空的但它没有改变。
但只要我输入一个数字,例如abcd1,那么输入元素就会正确显示1。
但是,上面的 console.log 显示 this.value 已正确更新。
知道为什么会这样吗?
我尝试使用input 而不是ngModelChange,但它是一样的。
<input type="text" [ngModel]="value" (input)="setValue($event.target.value)">
【问题讨论】:
-
为什么不直接使用
<input type="number">? -
因为我不希望用户像
000123这样输入