我正在尝试使用Schema Form创建一个唯一值数组,但这似乎是一项不可能完成的任务。
为了简单起见,我们可以考虑这个简单的唯一验证器:
$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错误?如何在删除项目或提交表单时实现数组的重新验证?谢谢!
答案 0 :(得分:0)
解决。我不为解决方案感到自豪,只要Angular Schema Form数组验证被破坏,我就无法找到更好的解决方案。
我已将此添加到表单指令
$scope.$watch('formState', () => {
TestStartActions.updateFormStateFromForm(newVal);
angular.forEach($scope.testStartForm.$error.runtimeUnique, (field) => {
field.$validate();
});
}, true);
以下是fiddle。