Javascript 有标准maxlength时,为什么Angular提供ng maxlength?

Javascript 有标准maxlength时,为什么Angular提供ng maxlength?,javascript,html,angularjs,validation,flawed-concept,Javascript,Html,Angularjs,Validation,Flawed Concept,HTML是自版本4.01以来的标准maxlength属性。 Angular提供了一个指令 不同之处在于,标准方法不允许输入超过max的值,而Angular的方法只会生成验证错误 他们为什么决定列入这样一项指令?这不是因为maxlength的动态数据绑定,因为行为不一致。这不是因为兼容性,因为它甚至在HTML4.01中也可用。我唯一的猜测是,它提供了一种替代的验证范式,但听起来像是过度工程化了。它不仅提供了对最大长度的验证,还添加了一个类ng invalid maxlength。 因此,当您将任何

HTML是自版本4.01以来的标准maxlength属性。 Angular提供了一个指令

不同之处在于,标准方法不允许输入超过max的值,而Angular的方法只会生成验证错误


他们为什么决定列入这样一项指令?这不是因为maxlength的动态数据绑定,因为行为不一致。这不是因为兼容性,因为它甚至在HTML4.01中也可用。我唯一的猜测是,它提供了一种替代的验证范式,但听起来像是过度工程化了。

它不仅提供了对最大长度的验证,还添加了一个类
ng invalid maxlength
。 因此,当您将任何超出限制的内容放入时,
ng无效的maxlength
类将放在那里 在这个类中,您可以编写自己的css


因此,如果验证失败,在按键后,css将同时被调用,并反映在您的UI上。

以前的答案在angular的早期版本中可能是正确的,但从今天起,angular v1.5.5,看起来
maxlength
ng maxlength
做的事情完全相同,但也对文本类型的输入强制执行HTML inputs maxlength属性

示例:

<input type="text" maxlength=5>

maxlength
将在输入上强制执行最多5个字符,并将正确的角度验证类添加到输入中

ngMaxlength
将仅强制验证。见:

建议:
正如您所说,只需使用
maxlength

-
maxlength
定义HTML元素的属性
ng maxlength
定义如何验证模型。也许是设计过度了,也许不是。我想这是相当随意的。你可能会问,为什么要使用
ng validate
检查某个东西是否是数字,或者只是使用
(暂时忘记兼容性问题)IHMO,我认为这主要是因为Angular:>ngMaxLength的表单管理绑定到验证/错误事件(和相关的CSS类),当HTML属性不是时。@BarthZalewski-fair point:这是一个很好的方法,@Den“当使用普通的maxlength属性时,也添加了这个指令”…所以这个答案不再正确。