【问题标题】:Custom angular2 validator in Dart giving console errorDart 中的自定义 angular2 验证器给出控制台错误
【发布时间】:2016-05-10 09:11:02
【问题描述】:

我正在尝试使用 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) 指向上面的匹配方法。

谢谢

【问题讨论】:

    标签: angular angular2-forms


    【解决方案1】:

    如果没有完整的回购案例,很难说。

    我假设ctrl.value 返回null 或其他一些非String 值。

    【讨论】:

    • 您的假设使我进行了一些调查。事实证明,问题是模型属性为空。将所有模型属性初始化为空字符串后,错误消失。有趣的是,堆栈跟踪没有给出关于模型的任何指示,而是指向了验证器。
    • stackoverflow.com/questions/29013591/… 可能会创建更好的堆栈跟踪(不确定在这种情况下是否有帮助)
    猜你喜欢
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2013-08-04
    相关资源
    最近更新 更多