我正在使用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返回布尔值。但是我收到了错误。怎么解决这个?
答案 0 :(得分:0)
Angular表单具有内置函数setValidators()
,可以对Validators进行编程分配。
您可以这样做:
if(someBool){
this.deviceForm.controls['password'].setValidators([Validators.required]);
}