2015-07-16 8 views
25

I dinamicamente creare input e voglio anche convalidare ciascuno di essi ma non posso impostare correttamente l'attributo ng-messages alla proprietà nome campo che viene generata dinamicamente.Angolare dinamicamente impostato ng-messages per attribuire il nome

<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> 

Ho avuto problemi con la seconda riga in cui ho impostato dinamicamente i messaggi ng ai messaggi di posta elettronica. Come posso fare questo?

+0

u ha ottenuto qualche errore ?? – Vanojx1

+0

Sì, ho un errore, non posso inviare l'attributo ng-messages con la sintassi {{}}, "Errore: [$ parse: sintassi] Errore di sintassi: il token '{' è un token imprevisto nella colonna 13 dell'espressione [form. sottonome {{indice}}. $ errore] a partire da [{{indice}}. $ errore] " – CSharpBeginner

+0

questo è piuttosto strano perché posso impostarlo sull'attributo nome sull'input ma non su ng-messages:/ – CSharpBeginner

risposta

51

Accesso alle proprietà del vostro oggetto modulo può anche essere fatto utilizzando le staffe, che dovrebbe risolvere il problema:

<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

Grazie per questo, stava avendo lo stesso problema e ha funzionato per me. Puoi spiegare di più sul perché esiste la forma []? – tchen

+1

"form" è il nome sul modulo così

potresti anche fare e la direttiva ng-messages sembrerebbe come questo ng-message = "myForm ['subName' ...]. Funziona e dovrebbe essere la risposta accettata – SomethingOn

+0

Questo codice funziona solo per me quando ho cambiato ng-show =" form.Name. $ touched "in ng-show =" form [ 'sottonome' + $ indice]. $ toccato " –

Problemi correlati