角度架构形式 - 数组验证

问题描述:

我想使用架构形式使一个独特的值的数组,但它似乎是一个不可能的任务。角度架构形式 - 数组验证

为了简单起见,让我们考虑这个简单的独特验证:

$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