Angular 模式表单 - 数组验证
Angular Schema Form - Array validation
我正在尝试使用模式表单制作一组唯一值,但这似乎是一项不可能完成的任务。
为简单起见,让我们考虑这个简单的唯一验证器:
$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步:删除最后一项,使第一项再次唯一。但是没有任何反应。一旦项目被删除,数组就不会再次验证,即使您单击应该触发表单验证的提交按钮,也不会发生任何事情。
这个问题是我的错吗?我的示例代码中有什么错误吗?还是某种 Schema-Form 错误?我怎样才能在删除项目或提交表单时实现数组的重新验证?谢谢!
已解决。就 Angular 模式表单数组验证被破坏而言,我对解决方案并不感到自豪我想不出更好的解决方案。
我已将其添加到表单指令中
$scope.$watch('formState', () => {
TestStartActions.updateFormStateFromForm(newVal);
angular.forEach($scope.testStartForm.$error.runtimeUnique, (field) => {
field.$validate();
});
}, true);
这里正在工作fiddle。
我正在尝试使用模式表单制作一组唯一值,但这似乎是一项不可能完成的任务。
为简单起见,让我们考虑这个简单的唯一验证器:
$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步:删除最后一项,使第一项再次唯一。但是没有任何反应。一旦项目被删除,数组就不会再次验证,即使您单击应该触发表单验证的提交按钮,也不会发生任何事情。
这个问题是我的错吗?我的示例代码中有什么错误吗?还是某种 Schema-Form 错误?我怎样才能在删除项目或提交表单时实现数组的重新验证?谢谢!
已解决。就 Angular 模式表单数组验证被破坏而言,我对解决方案并不感到自豪我想不出更好的解决方案。
我已将其添加到表单指令中
$scope.$watch('formState', () => {
TestStartActions.updateFormStateFromForm(newVal);
angular.forEach($scope.testStartForm.$error.runtimeUnique, (field) => {
field.$validate();
});
}, true);
这里正在工作fiddle。