There can be 1 or more inputs. All inputs must have different values. How to create such validation(directive)? If user enters non-unique value in some input - it should be highlighted as invalid.
For now I just have html template without validation
<form name="myForm" id="myForm">
<md-input-container ng-repeat="(key, item) in data">
<label>{{labels[item.id]}}</label>
<input ng-model="data[key].number" required>
</md-input-container>
<md-button ng-click="save()" class="md-raised md-button md-primary" ng-disabled="myForm.$invalid">
Save
</md-button>
</form>
Update. I managed to solve this with ng-change directive:
Template is the same except:
<input ng-model="data[key].number" name="number_{{key}}" required ng-change="validate(key, myForm)">
validate function in controller:
$scope.validate = function(key, myForm) {
for (let i = 0; i < data.length; i++) {
if(i == key) continue;
if(data[i].number === data[key].number){
myForm['number_' + key].$setValidity("unique", false);
return;
}else{
myForm['number_' + key].$setValidity("unique", true);
}
}
};
datalist?