Есть ли способ проверить два шаблона в одном setValidators () в angular? - PullRequest
0 голосов
/ 13 января 2020

У меня есть элемент управления в angular, и я хочу проверить диапазон Ipaddress и Ipaddress в одном элементе управления. Я использовал:

controls["CapPoolVolExpolAldClientControl"].setValidators([Validators.required, Validators.pattern(/([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){1,3}$/),Validators.pattern(/([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){1,3}\/[0-9]{1,2}$/)]).

Я даже пытаюсь с Validators.compose() не работает. любой выход?

Ответы [ 3 ]

0 голосов
/ 13 января 2020

Чтобы входные данные не имели проблем, необходимо выполнить все указанные валидаторы. В настоящее время у вас есть 2 валидатора, которые делают это:

/([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){1,3}$/
/([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){1,3}\/[0-9]{1,2}$/

Первый полностью содержится внутри второго. Это означает, что вы можете либо полностью удалить первый и оставить только второй, либо удалить первый и сделать деталь \/[0-9]{1,2} необязательной.

0 голосов
/ 13 января 2020

Создайте собственный Validator и добавьте несколько проверок внутри этой функции, что-то вроде этого

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

function combinePattern(control: AbstractControl): ValidationErrors {
  if (control.value) {
    console.log(control.value);
    var value: string = control.value;
    const patter1 = /([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){1,3}$/;
    const pattern2 = /([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){1,3}\/[0-9]{1,2}$/;
    if ( patter1.test(value) || pattern2.test(value)) {
      return { pattern: true };
    }
  }
  return null;
}

Пример

0 голосов
/ 13 января 2020

Я думаю, вам нужно изменить шаблон следующим образом:

                                                                      Here
                                                                     \/\/\/
Validators.pattern(/([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){2,3}$/)

, который будет проверять минимальное значение как 2 (что делает ваш второй шаблон), а 3 - для максимального значения, и убедитесь, что вы звоните updateValueAndValidity() метод после изменения в валидации.

Stackblitz Demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...