我遇到了关于AngularJS表单验证的奇怪问题。如果动态添加的控件(例如文本框)需要验证并从表单中删除,则如果删除的控件无效,则表单将保持无效。
最后一句话有点令人困惑。通过this plnkr preview(或参见the plnkr editor)了解相关信息。
我检查了FormController API。基于文档,没有方法可以激发任何类型的表单验证状态刷新,尽管AngularJS源代码在FormController中定义了$removeControl()
和$setValidity()
等方法。
是否存在规避验证问题的标准方法?
答案 0 :(得分:0)
之前我遇到过此问题,请参阅此答案以获取更多详细信息:https://stackoverflow.com/a/15192773/317180
显然这是一个活跃的错误。
解决方法是提供一个隐藏的计数器,在更改元素时递增,这会强制表单重新生效:
在模板中:
<input type="hidden" ng-bind="abc" />
在控制器中:
$scope.remove = function(position) {
$scope.items.splice(position, 1);
$scope.abc += 1;
}