为什么Angular在有标准maxlength时提供ng-maxlength?

时间:2014-11-13 11:17:44

标签: javascript html angularjs validation flawed-concept

HTML provides自版本4.01以来的标准maxlength属性。 Angular提供ng-maxlength指令。

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

他们为什么决定加入这样的指令?这不是因为maxlength的动态数据绑定,因为行为不一致。这不是因为兼容性,因为它甚至可以在HTML 4.01中使用。我唯一的猜测是它提供了另一种验证范例,但这听起来像是过度工程化。

2 个答案:

答案 0 :(得分:14)

它不仅提供最大长度的验证,还添加了一个类ng-invalid-maxlength。 所以当你把超出限制ng-invalid-maxlength的任何东西放在那里时 在那堂课上你可以写自己的CSS。

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

答案 1 :(得分:9)

之前的答案可能在早期版本的角度中是正确的,但截至今天和Angular v1.5.5,看起来maxlengthng-maxlength完全相同,但也强制执行HTML输入类型文本输入的maxlength属性。

示例:

<input type="text" maxlength=5>

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

ngMaxlength只会强制执行验证。请参阅:https://docs.angularjs.org/api/ng/directive/ngMaxlength

<强>提醒: 只需使用maxlength