У мене є форма, яка, якщо прапорець встановлений як false, примушує перевірку на введенні тексту за допомогою директиви ng-required. Якщо прапорець істинний, поле приховується, а ng-required встановлюється як false.
Проблема полягає в тому, що у мене також є регулярний вираз для перевірки, вказаний на вході, а також використовуючи директиву ng-pattern angular. Проблема, з якою я стикаюся, полягає в тому, що якщо користувач вводить невірний номер телефону, ставить прапорець, щоб деактивувати цей вхід (і, отже, не потребує подальшої перевірки), форма не дозволить подання, оскільки вона є недійсною на основі ng-шаблону.
Я спробував вирішити цю проблему, додавши функцію ng-change, щоб встановити для вхідної моделі значення null, проте ng-шаблон і, таким чином, поле все ще встановлено як недійсне в початковому наборі прапорця на false. Однак, якщо я знімаю прапорець, повертаючи все до початкового завантаження форми, то знову встановлюю цей прапорець, форма є дійсною і може подавати. Я не впевнений, чого мені не вистачає. Ось код ng-зміни, який я маю до цього часу:
var phoneNumberRegex = /^\(?(\d{3})\)?[ .-]?(\d{3})[ .-]?(\d{4})$/;
$scope.phoneNumberPattern = phoneNumberRegex;
$scope.removeValidation = function() {
if ($scope.cell._newUser === false) {
$scope.request._number = '';
$scope.phoneNumberPattern = /[0-9a-zA-Z]?/;
} else {
$scope.phoneNumberPattern = phoneNumberRegex;
}
};