2015-07-16 3 views
25

Ich dynamisch erstellen Eingänge und wollen auch überprüfen, dass jeder von ihnen, aber nicht ordnungsgemäß das ng-Nachrichten Attribut auf die Feldname Eigenschaft, die dynamisch generiert wird.Angular dynamisch festlegen ng-Nachrichten zum Namen Attribut

<input ng-model="sub.name" name="subName{{$index}}" class="form-control" placeholder="name" required maxlength="20" /> 
     <div class="field-error" ng-messages="form.subName{{$index}}.$error" ng-show="form.Name.$touched" role="alert"> 
       <div ng-message="required">Name is required.</div> 
      </div> 

Ich habe ein Problem mit der zweiten Zeile, wo ich die ng-Nachrichten dynamisch auf ng-Nachrichten eingestellt. Wie kann ich das machen?

+0

u einige Fehler bekam ?? – Vanojx1

+0

Ja, ich habe einen Fehler, ich kann das Attribut ng-messages nicht mit {{}} Syntax senden, "Error: [$ parse: syntax] Syntaxfehler: Token '{' ist ein unerwartetes Token in Spalte 13 des Ausdrucks [form. UnterName {{index}}. $ Fehler] beginnend bei [{{Index}}. $ Fehler] " – CSharpBeginner

+0

das ist ziemlich seltsam Ursache ich kann dies auf Name Attribut bei der Eingabe, kann aber nicht auf ng-Nachrichten:/ – CSharpBeginner

Antwort

51

Zugriff auf die Eigenschaften des Formulars Objekt kann auch mit Klammern erfolgen, was Ihr Problem lösen sollte:

<input ng-model="sub.name" name="subName{{$index}}" class="form-control" placeholder="name" required maxlength="20" /> 
<div class="field-error" ng-messages="form['subName' + $index].$error" ng-show="form.Name.$touched" role="alert"> 
    <div ng-message="required">Name is required.</div> 
</div> 
+0

Vielen Dank dafür hatte das gleiche Problem und es hat für mich funktioniert. Kannst du mehr darüber erklären, warum form [] existiert? – tchen

+1

"form" ist der Name auf dem Formular, also

Sie könnten auch und die ng-messages Direktive würde wie diese ng-Nachricht aussehen = "myForm ['subName' ...]. Das funktioniert und sollte die akzeptierte Antwort sein. – SomethingOn

+0

Dieser Code funktioniert nur, wenn ich ng-show =" form.Name. $ touched "in ng-show =" form [ 'subName' + $ index]. $ berührte " –