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

问题描述 投票:-1回答:1

我正在使用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返回布尔值。但是我收到了错误。怎么解决这个?

angular angular-reactive-forms
1个回答
0
投票

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

对于您的示例,您可以:

if(someBool){
this.deviceForm.controls['password'].setValidators([Validators.required]);
}
© www.soinside.com 2019 - 2024. All rights reserved.