Я хочу внедрить валидатор поля условного соответствия в мой код реактивной формы, но не знаю, как это сделать.
У меня есть условный код, который скрывает эти поля пароля, если LoginType не является паролем UserName.
public userForm: FormGroup;
ngOnInit() {
this.createFormControls();
this.createForm();
this.userForm.get('loginType').valueChanges.subscribe(
(loginType: string) => {
this.userForm.get('password').setValidators([]);
this.userForm.get('confirmPassword').setValidators([]);
if (loginType== 'UsernamePassword') { this.userForm.get('password').setValidators([Validators.required, Validators.minLength(8), Validators.pattern(/^.*(?=.{8,30})(?=.*[a-z])(?=.*[A-Z])(?=.*[\d])(?=.*[\d])(?=.*[\W]).*$/)]);
this.userForm.get('confirmPassword').setValidators([Validators.required, Validators.minLength(8), Validators.pattern(/^.*(?=.{8,30})(?=.*[a-z])(?=.*[A-Z])(?=.*[\d])(?=.*[\d])(?=.*[\W]).*$/)]);
}
this.userForm.get('password').updateValueAndValidity();
this.userForm.get('confirmPassword').updateValueAndValidity();
}
)
}
Вышеуказанные работы
Я хочу реализовать MatchValidator и обнаружил, что во всех примерах используется метод, аналогичный это
this.form = fb.group({
password: ['', Validators.required],
confirmPassword: ['', Validators.required]
}, {
validator: PasswordValidation.MatchPassword // your validation method
})
Однако я понятия не имею, что в моем конкретном коде можно сказать условно, поскольку я ссылаюсь либо на форму с помощью this.userForm, либо на элемент управления с помощью this.userForm.get('controlName')
Как добавить MatchFieldValidator в мой код, когда я использую условную логику с valueChanges.subscribe и updateValueAndValidity?