Angular:如何有条件地为活动表单应用验证器

时间:2018-03-01 12:58:39

标签: angular angular-reactive-forms

我正在使用Reactive表单并以这种方式声明了表单。

constructor(
    private fb: FormBuilder) {
  }
public ngOnInit(): void {
    let ipRegex = /^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})*$/;
    let form = {
    ipaddress: ['', [Validators.required, Validators.pattern(ipRegex)]],
    port: ['', [Validators.required]],
    username: ['', [Validators.required]],
    password: ['', [Validators.required]],
    enablepassword: ['']
    };

    this.deviceForm = this.fb.group(form);
  }

我想根据方法提供的布尔条件强制设置密码表单字段。我尝试将该方法直接放在Validators.required旁边,如[Validators.required,this.myFunction()],因为this.myFunction返回布尔值。但是我收到了错误。怎么解决这个?

1 个答案:

答案 0 :(得分:0)

Angular表单具有内置函数setValidators(),可以对Validators进行编程分配。

您可以这样做:

if(someBool){
this.deviceForm.controls['password'].setValidators([Validators.required]);
}