Qual é a diferença entre required
e ng-required
(validação de formulário)?
Os elementos do formulário AngularJS procuram o required
atributo para executar funções de validação. ng-required
permite que você defina o required
atributo dependendo de um teste booleano (por exemplo, exija apenas o campo B - digamos, um número de aluno - se o campo A tiver um determinado valor - se você tiver selecionado "aluno" como opção )
Como exemplo, <input required>
e <input ng-required="true">
são essencialmente a mesma coisa
Se você está se perguntando por que é dessa maneira (e não apenas make <input required="true">
ou <input required="false">
), é devido às limitações do HTML - o required
atributo não tem valor associado - sua mera presença significa (conforme os padrões HTML) que o elemento é necessário - portanto, o angular precisa de uma maneira de definir / desabilitar o valor necessário ( required="false"
seria HTML inválido)
<form method="post" action="/foo" novalidate>
. Novamente, este é um atributo html5, não relacionado ao angularJS.ng-required
aponta para uma variável de escopo / controlador, Angular a monitora quanto a alterações e define o atributo necessário de acordo. Enquanto no caso dorequired
atributo HTML simples, você não tem esse tipo de flexibilidade. Não? E enquanto estamos no mesmo tópico, o que dizerng-attr-required
? É exatamente o mesmo queng-required
?Gostaria de fazer um complemento para a resposta de tiago :
Suponha que você esteja ocultando um elemento usando
ng-show
e adicionando umrequired
atributo ao mesmo:irá lançar um erro algo como:
Isso ocorre porque você simplesmente não pode impor
required
validação aoshidden
elementos. O usong-required
facilita a aplicação condicional da validação necessária, o que é incrível!fonte
ng-if
vez deng-show
/ng-hide
para contornar esse possível problema.O atributo HTML
required="required"
é uma declaração informando ao navegador que esse campo é necessário para que o formulário seja válido. (required="required"
é o formulário XHTML, apenas usarrequired
é equivalente)O atributo Angular
ng-required="yourCondition"
significa 'isRequired (yourCondition)' e define o atributo HTML dinamicamente para você, dependendo da sua condição.Observe também que a versão HTML é confuso , é não possível escrever algo condicional como
required="true"
ourequired="false"
, apenas a presença dos assuntos de atributos (meios presentes verdade)! É aqui que o Angular ajuda vocêng-required
.fonte