我正在使用 Angular (1.3b17) 动态创建表单。我将我的表单模式存储在一个对象中,并包括几个定义我的字段在该模式中的行为的属性,例如一个字段将具有“类型”(文本、文本区域、检查等)和“最大长度”属性。然后,我将元素的 Angular 属性设置为对象的相应属性(例如 ng-maxlength="field.maxlength")。
我注意到有些奇怪,我想看看它是否按预期工作。当设置了属性但未指定值时 (ng-maxlength="") 然后 $error 在键入任何内容后立即设置为 true,因为它期望最大长度为 0。类似地,使用表达式 (ng-maxlength=如果未设置属性,“field.maxlength”) 的行为方式相同。
我创建了一个简单的 Plunker所以你可以明白我指的是什么。如果未设置该值,我个人希望不会进行 maxlength 检查,即使该属性存在也是如此。
<input id="txtName" ng-model="myval" type="text" name="name" ng-maxlength="" /><br />
{{myForm.name.$error}}
或者
<input id="txtName" ng-model="myval" type="text" name="name" ng-maxlength="someundefinedvalue" /><br />
{{myForm.name.$error}}
当然,我可以通过将 ng-maxlength 设置为较大的值来解决这个问题,但这似乎并不理想。这种行为有原因吗?或者它可能是一个错误?
最佳答案
貌似只要在表单控件上定义指令就可以了the validator is applied不幸的是。所以,你的问题的答案是,它一直都是这样,它可能被认为是一个错误,但在这一点上它会是一个破坏性的变化,而且不太可能被改变。
关于javascript - 当未设置显式值且字段包含任何字符时,Angular ng-maxlength 将字段标记为无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25003379/