Sen $ kullanabilirsiniz öneki çıkarın ve onu Burada :)
çalışmalıdır çözüm HTML'dir eval yöntemiyle, 'myDynamicForm.' + formField.formFieldId + '.$error'
dizgisini bir ifadeye ayrıştırmak için here.
$ kapsamı. $ Eval geçerli kapsama ifadesini çalıştırır ve sonucu döndürür. İfadedeki herhangi bir istisna yayılır (yakalanmamış). jsfiddle here
Başvurunuz config ngMessages
modülünü kaydolmayı unutmayın çalışan Eğik ifadeleri
bakınız
değerlendirirken yararlıdır.
HTML:
<div class="container">
<div class="row">
<div class="col-sm-4" data-ng-controller="DynamicFormController as vm">
<form name="myDynamicForm" novalidate>
<div class="form-group" data-ng-repeat="formField in formFields">
<label for="{{formField.formFieldId}}">{{formField.label}}</label>
<input class="form-control" name="{{formField.formFieldId}}" id="{{formField.formFieldId}}" ng-required="{{formField.isMandatory}}" type="text" ng-model="formField.value">
<div ng-messages="vm.onValidateMessages(formField)">
<label ng-message="required" class="label label-danger">{{formField.label}} required</label>
</div>
</div>
<button type="button" class="btn btn-default" data-ng-click="vm.onSubmitForm()">Submit</button>
</form>
</div>
</div>
JS:
var myApp = angular.module('myApp', ['ngMessages']);
myApp.controller('DynamicFormController', ['$scope', function($scope) {
var self = this;
$scope.formFields = [{
isMandatory: true,
formFieldId: 'UniqueField1',
value: null,
label: 'Email'
}, {
isMandatory: false,
formFieldId: 'UniqueField2',
value: null,
label: 'First Name'
}];
self.onSubmitForm = function() {
if (!$scope.myDynamicForm.$valid) {
console.error('form is invalid');
return;
}
};
self.onValidateMessages = function(formField) {
return $scope.$eval('myDynamicForm.' + formField.formFieldId + '.$error');
};
}]);