【问题标题】:Validators same as other value in form验证器与表单中的其他值相同
【发布时间】:2016-07-04 00:50:24
【问题描述】:

我想知道是否有一个验证器可以比较来自同一表单的两个不同值 - 假设我有以下内容:

 this.loginForm = fb.group({
      email: ["", Validators.required],
      password: ["", Validators.required],
      repeatPassword: ["", Validators.required]
  });

我在文档中找到了this,但它不是很有帮助。

有什么想法吗?

【问题讨论】:

    标签: angular angular2-forms angular2-formbuilder


    【解决方案1】:

    您需要将验证器分配给一个完整的表单组来实现这一点。类似的东西:

    this.form = fb.group({
      name: ['', Validators.required],
      email: ['', Validators.required]
      matchingPassword: fb.group({
        password: ['', Validators.required],
        repeatPassword: ['', Validators.required]
      }
    }, {validator: this.areEqual}));   <--------
    

    这样,您将可以访问组的所有控件,而不仅仅是一个...这可以使用组控件的controls 属性进行访问。触发验证时直接提供后者(不是单个)。例如:

    areEqual(group: ControlGroup) {
      var valid = false;
    
      for (name in group.controls) {
        var val = group.controls[name].value
    
        (...)
      }
    
      if (valid) {
        return null;
      }
    
      return {
        areEqual: true
      };
    }
    

    查看这个问题了解更多详情:

    【讨论】:

      猜你喜欢
      • 2017-05-19
      • 1970-01-01
      • 2017-11-05
      • 2017-02-19
      • 2021-09-26
      • 2020-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多