Angular ReactiveForms - Как установить валидаторы для всей FormGroup - PullRequest
0 голосов
/ 16 июня 2020

У меня сейчас очень большая форма.

У меня есть следующие валидаторы для каждого поля, например:

this.surname = new FormControl('', [
      Validators.pattern(/^([a-zA-Z0-9]+[_.\- /\\]{0,1})*([a-zA-Z0-9]+)$/i),
      Validators.minLength(3),
      Validators.maxLength(30),
      Validators.required
    ]);

и то же самое для каждого поля. Можно ли не повторять код и применять одни и те же правила для всех? Я просто попробовал:

formGroupName.setValidators([Validators.required]); 

, но, к сожалению, это не сработало.

Ответы [ 2 ]

0 голосов
/ 16 июня 2020

FormGroup принимает валидатор в качестве второго параметра. вы можете передать массив функции синхронного валидатора следующим образом:

Попробуйте это:

 this.form.group({
      lastName: ['', ],
      firstName: ['', ]
    },{
      validator: [Validators.required]
    });
0 голосов
/ 16 июня 2020

Вы можете:

1. - Использовать вспомогательную переменную

const validators=[
      Validators.pattern(/^([a-zA-Z0-9]+[_.\- /\\]{0,1})*([a-zA-Z0-9]+)$/i),
      Validators.minLength(3),
      Validators.maxLength(30),
      Validators.required
    ]
this.surname = new FormControl('',validators)

2. - Использовать setValidator для перебора элементов управления

Object.keys(this.form).forEach(key=>{
     this.form.get(key).setValidators(Validators.required)
}
...