Mam formularz, który jeśli pole wyboru jest fałszywe, wymusza walidację danych wejściowych za pomocą dyrektywy ng-required. Jeśli pole wyboru ma wartość true, pole jest ukryte, a wartość ng-required ma wartość false.
Problem polega na tym, że mam również wyrażenie regularne do walidacji określone na wejściu, a także wykorzystuję dyrektywę kątową ng-pattern. Problem, z którym się spotykam, polega na tym, że jeśli użytkownik poda nieprawidłowy numer telefonu, zaznacza pole, aby dezaktywować dane wejściowe (i nie wymaga dalszej weryfikacji), formularz nie pozwoli na przesłanie, ponieważ jest nieprawidłowy w oparciu o wzorzec ng.
Próbowałem rozwiązać ten problem, dodając funkcję ng-change, aby ustawić model wejściowy na null, jednak wzorzec ng, a tym samym pole, jest nadal ustawiony jako nieprawidłowy w początkowym zestawie pola wyboru na wartość false. Jeśli jednak odznaczę to pole, ustawiając wszystko z powrotem na początkowe ładowanie formularza, a następnie zaznaczam to pole ponownie, formularz jest ważny i można go przesłać. Nie jestem pewien, czego mi brakuje. Oto kod zmiany ng, który mam do tej pory:
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;
}
};