2017-01-31 8 views
0

ich die folgende HTML-Element haben:Wie wird eine Klasse zugewiesen, wenn die Eingabe ungültig ist?

<input type="text" ng-model="form.artist" ng-class="form.artist.$invalid ? 'error' : ''" required ng-minlength="4"> 

Aber es funktioniert nicht, wenn ich eine ungültige Eingabe "form.artist"

+0

Sie sollten Ihre Frage aktualisieren oder eine Antwort markieren als so andere akzeptiert kennen das Problem behoben ist. Sie erhalten auch Reputationspunkte. – ZimSystem

Antwort

1
<form name="demoForm"> 

<input type="text" name="demoForm.artist" ng-model="form.artist" ng-class="{'yourclassname': demoForm.artist.$invalid && demoForm.artist.$dirty}"> 

</form> 
+0

Willkommen bei Stack Overflow! Während Sie das Problem dieses Benutzers möglicherweise gelöst haben, sind Code-Only-Antworten für Benutzer, die in Zukunft auf diese Frage kommen, nicht sehr hilfreich. Bitte bearbeiten Sie Ihre Antwort, um zu erklären, warum Ihr Code das ursprüngliche Problem löst. –

+0

Achten Sie auch darauf, wie sie sich von den anderen Antworten unterscheidet, die auch die Verwendung von 'ng-class' zeigen. –

0

verwenden

<div ng-class="{'class-name': 'condition'(boolean)}" </div>

In Ihrem Fall <input type="text" ng-model="form.artist" ng-class="{'class-name':'form.artist.$invalid}">

0
haben

Ja, Sie ca n ng-class verwenden eine andere Art und Weise Attribut:

<input type="text" ng-model="form.artist" ng-class="{'error': form.artist.$invalid}"> 
0

Sie haben ein name Attribut auf Ihre input setzen, dann $invalid Flagge kommt von [formName].[inputName].$invalid:

<form name="myForm"> 
    <input type="text" name="artist" required 
      ng-minlength="4" 
      ng-model="form.artist" 
      ng-class="myForm.artist.$invalid ? 'error' : ''" /> 
    <!-- or ng-class="{error:myForm.artist.$invalid}" --> 
</form> 

Siehe this jsfiddle

Siehe auch the documentation von eckig:

In ähnlicher Weise enthält ein Eingabesteuerelement mit der ngModel-Direktive eine Instanz von NgModelController. Eine solche Kontrollinstanz kann als Eigenschaft der Formularinstanz mit dem Attribut name des Eingabesteuerelements veröffentlicht werden. Das Attribut name gibt den Namen der Eigenschaft in der Formularinstanz an.

+0

Dies ist mein Beispiel, das nicht funktioniert: https://jsfiddle.net/38hdzga8/1/ – Halama

+0

Wie ich in meiner Antwort sagte, müssen Sie ein 'name' Attribut hinzufügen, sehen Sie dies in Ihrem Beispiel funktioniert: https: //jsfiddle.net/38hdzga8/2/ – devqon

Verwandte Themen