javascript - Angular 2 将参数变量传递给验证器函数

标签 javascript angularjs

我有一个自定义验证器,需要访问本地组件的变量。在我的组件中,我有一个变量 bool 值,当用户与表单交互时它会发生变化

export class MyForm implements OnInit{
  public localBool : boolean;

  constructor(public fb: FormBuilder)
  ngOnInit(){
     this.form = this.fb.group({
         field : ['', [CustomValidator.validateIfRequired(this.localBool)]]
     })
  }

}


export CustomValidator {
    static validateIfRequired(condition:boolean){
          console.log(condition);
          ....
    }

}

当我像这样使用它时,我得到了未定义

CustomValidator.validateIfRequired(this.localBool) 

但是当我像这样使用它时我就明白了

CustomValidator.validateIfRequired(true)

如何传递或计算局部变量? +1 简要解释 Angular 如何评估参数以及为什么我未定义。

最佳答案

您应该使用这样的验证器

import {Control} from "@angular/common";

interface ValidationResult {
    [key: string]: boolean;
}

export function emailFormat(control: Control): ValidationResult {
    var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;

    if (control.value != "" && (control.value.length <= 5 || !EMAIL_REGEXP.test(control.value))) {
        return {"incorrectMailFormat": true};
    }
    return null;
}

export class LoginPage {
    public loginForm: ControlGroup;

    constructor(private fb: FormBuilder) {
        this.loginForm = fb.group({
            'email': ['', Validators.compose([Validators.required, emailFormat])],
            'password': ['', Validators.compose([Validators.required, Validators.minLength(6)])]
        });
    }
}

关于javascript - Angular 2 将参数变量传递给验证器函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42213895/

相关文章:

javascript - MongoDB |无法更新文档的 'role'

angularjs - 如何修复 AngularJS 组件属性的语法错误?

javascript - AngularJS 模拟 - 使用 jasmine 进行单元测试的相同服务、不同功能

javascript - CRUD 策略,每个 CRUD 操作使用一次还是两次调用?

javascript - 获取输入并选择div内的框元素

javascript - 如何从内容脚本调用 chrome.tabs.create API?

javascript - 如何在angularjs中执行路由

javascript - 获取接下来三个月的星期日列表

javascript - Rails "Load more..."而不是分页

javascript - 如何访问 Angular 表单元素的属性