【发布时间】:2020-11-19 23:45:41
【问题描述】:
我正在使用 TypeScript 学习 Angular,与 JavaScript 的一些不一致让我感到困扰。这是一个与纯 JavaScript 完美配合的函数(它以编程方式将 min 和 max 属性设置为输入 - 请不要问我 why I'd want to do that programmatically):
function change_number(input,min,max) {
if(input.value > max)
input.value = max;
else if(input.value < min)
input.value = min;
}
<input type='number' oninput='change_number(this,1,5)' placeholder='Enter a number' />
在 Angular 和 TypeScript 中,该函数的行为很奇怪:如果我在输入字段中输入 10,它不会重置为 5,直到我输入另一个数字,这意味着该值仅在 之后读取 input 事件(而不是 on-input - 不知道这是否有意义)。更奇怪的是它在keydown 和keyup 事件中运行良好。为什么会有这种行为?它是否与 Angular 将事件绑定到输入的方式相关联?我有一种感觉,这将有助于我更好地理解 Angular 与 NgModel 的绑定机制
仅供参考,这是我在 Angular 中调用函数的方式(使用 Ionic 框架) - 我使用 [(ngModel)] 中的绑定 quantity 作为输入值:
<ion-input type='number' (input)='change_numbers(1,5)' [(ngModel)]='quantity'></ion-input>
【问题讨论】:
-
这个参数似乎是多余的。最小值和最大值也可以是属性,而不是您手动设置值。 w3schools.com/tags/att_input_type_number.asp
-
(input)='change_numbers(1,5) ,这里你应该传递3个参数吧?
-
@TechnoTech 没有必要,因为您可以通过 `[(ngModel)] 获取输入的值。 @John,请查看我的链接,了解为什么我以编程方式而不是使用属性。它在 Angualr 中不起作用,被报告为错误,但我不确定
-
是的,没错,我以为您使用的是相同的功能。让我检查一下,我将为您的解决方案创建一个链接
标签: javascript html angular typescript