【问题标题】:Angular2 Dart - form validator validateEqualAngular2 Dart - 表单验证器 validateEqual
【发布时间】:2016-09-06 10:01:41
【问题描述】:

我尝试验证密码确认输入,但找不到正确的内置验证器。

我试过了:

<input id="passwordConfirmation" name="passwordConfirmation"    class="form-control" type="password"
                       [(ngModel)]="form.passwordConfirmation" ngControl="passwordConfirmation" #passwordConfirmation="ngForm"
                       required pattern="{{form.password}}">

但是pattern="{{form.password}}" 不起作用。

我必须实现自定义验证器吗?

感谢您的帮助。

【问题讨论】:

  • 作为属性传递的验证器当前必须是静态的,并且不能与"{{form.password}}" 绑定。使用模型驱动的表单会更加灵活。
  • 感谢您的评论。我很惊讶属性必须是静态的,但我想它会改变。
  • 我很确定这会改变。 (最近在TS里改了)

标签: validation angular dart


【解决方案1】:

最近有一个关闭的问题:https://github.com/angular/angular/issues/7393

没有它,似乎绑定模式的唯一方法就是实现自定义验证器。类似的东西

const MY_PATTERN_VALIDATOR =
const Provider(NG_VALIDATORS, useExisting: MyPatternValidator, multi: true);

@Directive(
    selector:
    '[myPattern][ngControl],[myPattern][ngFormControl],[myPattern][ngModel]',
    providers: const [OK_PATTERN_VALIDATOR],
    host: {
      'pattern': 'value'
    })
class MyPatternValidator implements Validator {
  ValidatorFn _validator;
  String value;

  Map<String, dynamic> validate(AbstractControl c) {
    return _validator(c);
  }

  @Input()
  set myPattern(String value) {
    _validator = Validators.pattern(value);
    this.value = value;
  }
}

【讨论】:

  • 此更改目前仅适用于 TS。 Dart 还没有新的表单模块。
猜你喜欢
  • 1970-01-01
  • 2016-10-26
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多