Eu tenho um formulário que, se uma caixa de seleção for falsa, impõe a validação em uma entrada de texto usando a diretiva ng-required. Se a caixa de seleção for verdadeira, o campo ficará oculto e o ng-obrigatório será definido como falso.
O problema é que eu também tenho uma regex para validação especificada na entrada, também utilizando a diretiva angular do padrão ng. O problema que estou encontrando é que se um usuário preencher um número de telefone inválido, marcar a caixa para desativar essa entrada (e, consequentemente, não precisar de mais validação), o formulário não permitirá o envio, pois é inválido com base no padrão ng.
Tentei resolver esse problema adicionando uma função de mudança de ng para definir o modelo de entrada como nulo, no entanto, o padrão de ng e, portanto, o campo ainda está definido como inválido no conjunto inicial da caixa de seleção como falso. No entanto, se eu desmarcar a caixa, configurando tudo de volta para o carregamento inicial do formulário, marque a caixa novamente, o formulário é válido e pode ser enviado. Não tenho certeza do que estou perdendo. Aqui está o código ng-change que tenho até agora:
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;
}
};