Ho un modulo che se una casella di controllo è falsa impone la convalida su un input di testo utilizzando la direttiva ng-required. Se la casella di controllo è true, il campo è nascosto e ng-required è impostato su false.
Il problema è che ho anche una regex per la convalida specificata nell'input e che utilizza la direttiva angolare ng-pattern. Il problema che sto riscontrando è che se un utente inserisce un numero di telefono non valido, seleziona la casella per disattivare tale input (e di conseguenza non necessita di ulteriore convalida) il modulo non consentirà l'invio in quanto non valido in base al modello ng.
Ho tentato di risolvere questo problema aggiungendo una funzione ng-change per impostare il modello di input su null, tuttavia il ng-pattern e quindi il campo è ancora impostato su non valido sul set iniziale della casella di controllo su false. Se tuttavia deseleziono la casella, reimpostando tutto sul caricamento del modulo iniziale, quindi spunto di nuovo la casella, il modulo è valido e può essere inviato. Non sono sicuro di cosa mi manchi. Ecco il codice ng-change che ho finora:
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;
}
};