Как передать регулярное выражение из директивы на вход AngularJs

0

У меня есть эта директива

angular.module('tutors.components')
  .directive('formValidator', function() {
    return {
      restrict: 'A'      
      link: function (scope, element, attrs) {
        function nameValidator (input) {
          var regExp : "/^[a-zA-Z']*$/";
          var validator : regExp.test(input);
          return validator;
        }  
      };
    });

И этот html

    <input form-Validator
           type="text"
           required
           name="firstName"
           class="form-control"
           ng-maxlength="20"
           placeholder="First name"
           ng-model="user.firstName"
           ng-disabled="vm.isLoading"
           tooltip="{{requiredMsg}}"
           tooltip-placement="top"
           tooltip-trigger="focus"
           tooltip-enable="signupForm.firstName.$error.required && signupForm.firstName.$touched">

и я хочу запустить директиву, чтобы он проверял текст, введенный во вход, я попытался использовать ng-шаблон, подобный этому ng-pattern = "/[a-zA-Z] +/", но это не сработало ( я по-прежнему предпочитаю использовать его по директиве)

  • 1
    Может быть, я что-то упускаю, но вы определяете nameValidator в своей функции ссылки, но никогда не вызываете это ни для чего.
Теги:
ng-pattern

1 ответ

0

Ваша директива должна состоять из малогабаритных form-validator для получения вызова директивы компилятором.

Кроме того, вам нужно изменить nameValidator функции nameValidator ниже.

.directive('formValidator', function() {
  return {
    restrict: 'A',
    require: 'ngModel', //to get ngModelController
    link: function(scope, element, attrs, ngModel) {
      function nameValidator(input) {
          var regExp = "/^[a-zA-Z]$/";
          var validator = regExp.test(input);
          return validator;
      }
      ngModel.$validators.push(nameValidator); //should pushed to validators to validate
    }
  }
})

OR ng-pattern должен быть точным, только он должен иметь ^ (start) & $ (end)

ng-pattern="/^[a-zA-Z]*$/"

Demo Plunkr

  • 0
    Фрагмент и демонстрация не синхронизированы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню