Пользовательский валидатор angular2 в Dart выдает ошибку консоли

Я пытаюсь сделать валидатор angular2 с помощью Dart:

.дротик

class CustomValidators {

 static Map<String, bool> wordValidator(Control ctrl)
  {
    if( matches(ctrl.value, r"^[A-Za-z]{1,}[\'\ \,\.\-]*[a-z]*$"))
    {
      return {'wordValidator': true};
    }
  }
 }

где совпадения имеет следующее определение:

Спички

/// check if string matches the pattern.
bool matches(String str, pattern) {
  RegExp re = new RegExp(pattern);
  return re.hasMatch(str);
}

Когда я пытаюсь запустить проверку, я получаю следующее в консоли

консольный вывод

    (anonymous function)    
  ERROR CONTEXT:
    (anonymous function)    
  DartObject
    (anonymous function)    
  <
Uncaught Unhandled exception:
EXCEPTION: Invalid argument(s) in [AST]
ORIGINAL EXCEPTION: Invalid argument(s)
ORIGINAL STACKTRACE:
#0      _JSSyntaxRegExp.hasMatch (dart:core-patch/regexp_patch.dart:174)
#1      matches (package:validator/src/validator.dart:53:13)
#2      CustomValidators.wordValidator (package:epimss_ng2_shared/validators.dart:83:9)
...

(package:epimss_ng2_shared/validators.dart:83:9) указывает на метод соответствия выше.

Спасибо


person st_clair_clarke    schedule 01.02.2016    source источник


Ответы (1)


Трудно сказать без полного репозитория.

Я предполагаю, что ctrl.value возвращает null или какое-то другое значение, отличное от String.

person Günter Zöchbauer    schedule 01.02.2016
comment
Ваше предположение побудило меня провести некоторые расследования. Оказалось, что проблема заключалась в свойстве модели, которое было нулевым. После инициализации всех свойств модели пустой строкой ошибка исчезает. Интересно, что трассировка стека не указывала на модель и указывала на валидатор. - person st_clair_clarke; 02.02.2016
comment
stackoverflow.com/questions/29013591/ может улучшить трассировку стека (не уверен, поможет ли это в данном случае) - person Günter Zöchbauer; 02.02.2016