2016-01-21 97 views
0

我想使用架構形式使一個獨特的值的數組,但它似乎是一個不可能的任務。角度架構形式 - 數組驗證

爲了簡單起見,讓我們考慮這個簡單的獨特驗證:

$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步:刪除最後一個項目,以便第一個項目再次唯一。但沒有任何反應。一旦一個項目被刪除,該數組不會再次被驗證,即使您點擊了提交按鈕,該按鈕應該會觸發表單沒有發生的值。

這個問題我的錯誤?我的示例代碼中有一些錯誤嗎?或者它是某種模式表單錯誤?我怎麼能實現數組的重新驗證,無論是刪除項目或提交表單?謝謝!

回答

0

已解決。只要Angular Schema Form數組驗證被破壞,我對解決方案並不感到自豪,我找不出更好的解決方案。

我已經加入這個形式指令

$scope.$watch('formState',() => { 
    TestStartActions.updateFormStateFromForm(newVal); 
    angular.forEach($scope.testStartForm.$error.runtimeUnique, (field) => { 
     field.$validate(); 
    }); 
}, true); 

這裏工作fiddle