У меня есть следующая директива, которую я написал, которая проверит правильность поля при изменении a) значения поля или b) элемент поля был размытым.Угловая проверка всех полей на отправке
Во-первых, вот пример того, как директива может быть использована:
<form name="myForm">
<input type="text" name="favoriteColor" validate-for="myForm">
</form>
Причина я должен указать myForm
потому, что я иногда вложенные формы. Так что в этом случае она будет идти, как это:
<form name="myForm">
<input type="text" name="favoriteColor" validate-for="myForm">
<ng-form name="innerForm">
<input type="text" name="favoriteNumber" validate-for="innerForm">
</ng-form>
</form>
Во всяком случае, это то, что мой код выглядит следующим образом (ES6):
'use strict';
class ValidateFor {
constructor() {
this.restrict = 'A';
this.require = 'ngModel';
this.link = ($scope, $element, $attrs, ngModel) => {
var form = $scope[$attrs.validateFor];
var field = form[$element.attr('name')];
$scope.$watch(() => ngModel.$modelValue,() => {
if (field.$touched) {
this.checkForErrors(field, $element);
}
});
$element.bind('blur',() => {
this.checkForErrors(field, $element);
});
};
}
checkForErrors(field, $element) {
if (field.$invalid) {
$element.addClass('error');
} else {
$element.removeClass('error');
}
}
}
ValidateFor.$inject = [];
export default ValidateFor;
Единственное моя директива не сделать, это добавить error
класс на поле, когда форма была отправлена.
Как добавить класс ошибки ко всем моим полям при отправке формы?
Меня не волнует, означает ли решение изменение моей директивы или добавление кода в другое место.