角度架构形式 - 数组验证
问题描述:
我想使用架构形式使一个独特的值的数组,但它似乎是一个不可能的任务。角度架构形式 - 数组验证
为了简单起见,让我们考虑这个简单的独特验证:
$scope.validateUnique = function(value) {
console.log('running validation');
var sameName = $scope.model.NoDuplicate.filter(function(item) {
return item.key === value;
});
return sameName.length < 2;
}
打开控制台,并访问这个Fiddle。
步骤1:添加新的项称为1.
步骤2:添加新的项称为12.
步骤3:添加新的项目被称为123
4步:添加所谓的新项1234.
到目前为止好。
步骤5:将第一项(1)更改为1234,以便出现错误消息。
第6步:删除最后一个项目,以便第一个项目再次唯一。但没有任何反应。一旦一个项目被删除,该数组不会再次被验证,即使您点击了提交按钮,该按钮应该会触发表单没有发生的值。
这个问题我的错误?我的示例代码中有一些错误吗?或者它是某种模式表单错误?我怎么能实现数组的重新验证,无论是删除项目或提交表单?谢谢!
答
已解决。只要Angular Schema Form数组验证被破坏,我对解决方案并不感到自豪,我找不出更好的解决方案。
我已经加入这个形式指令
$scope.$watch('formState',() => {
TestStartActions.updateFormStateFromForm(newVal);
angular.forEach($scope.testStartForm.$error.runtimeUnique, (field) => {
field.$validate();
});
}, true);
这里工作fiddle。