【发布时间】:2017-10-10 06:59:20
【问题描述】:
当用户在输入字段中键入内容时,我希望将除数字之外的所有内容替换为空字符串。不幸的是,该应用程序没有检测到 ngModel 已更改,并且仅在再次输入数字时更新变量balanceAmount。
是否有可能告诉 Angular ngModel 已更改并且应该更新?
HTML:
<input [ngModel]="balanceAmount" (ngModelChange)="onBalanceChange($event)" />
打字稿:
onBalanceChange(amount) {
amount = amount.replace(/[^0-9\.]+/g, '');
this.balanceAmount = amount;
}
【问题讨论】:
-
不是 100% 清楚你在问什么,但一个空字符串是
'',而不是undefined。此外,您正在执行string操作,然后尝试与integer进行比较。即使将您的string与0进行比较是有意义的,如果您正在替换非数字,包括-符号,则该 if 语句永远不会为真,因此该数字不可能为负数。这整个功能是有缺陷和不必要的。 -
如果您真的试图将用户输入限制为数字,您应该在输入中使用
type="number"。唯一需要注意的是这个数字可以是负数,它可能允许e(它代表一个指数)。 -
我更新了我的问题以明确我的观点。您正在谈论的功能和 if 语句不是我的问题的一部分。
-
你有什么理由不使用内置的?如果您绝对必须 重新发明轮子,那么我评论的第一部分仍然有效(使用
''而不是undefined)。顺便说一句,您将函数更改为的 pseudocode 试图证明该函数的其余部分不相关,实际上会起作用,这只会进一步证明您在这里没有提供足够的信息. -
How to add form validation pattern in angular2 的可能重复项。如果使用 HTML 输入限制不是一个选项,则使用
pattern验证器,而不是您自己的自定义函数,它只是评估模式。