2016-05-27 9 views
2

Ich habe eine Direktive erstellt, was bedeutet, dass leere Eingaben grundsätzlich ein Array von Objekten ausfüllen. Die Objekte haben mehrere Eigenschaften, aber hier fülle ich nur die Eigenschaft projectname.ng Nachrichten innerhalb Repeater nicht angezeigt

<div ng-repeat="projectStatus in projectStatusList track by $index"> 
<md-input-container> 
    <label>Project Name {{$index +1}}</label> 
    <input ng-model="projectStatusList[$index].projectName" name="projectName_{{$index+1}}" ng-required="isRowRequired($index)"> 
    <div ng-messages="parentForm['projectName_{{$index+1}}'].$error"> 
     <div ng-message="required">The project name is required</div> 
    </div> 
</md-input-container> 
</div> 

Diese Direktive in einer Form genannt wird, die es als Parentgeben wird. Ich habe bereits überprüft und das Formular wird korrekt an die Richtlinie übergeben. Mein Verdacht ist, dass die Bindung in ng-messages="parentForm['projectName_{{$index+1}}'].$error" nicht korrekt erfolgt. Wenn ich das generierte HTML inspiziere, erscheint nichts in den ng Nachrichten div.

Außerdem wird die erforderliche Eigenschaft des Felds dynamisch über isRowRequired($index) festgelegt, und dies wird korrekt gerendert. Das Problem ist, dass die Eingabe mit einem roten Rand unterstrichen wird, wenn leer und erforderlich, aber die Nachrichten nicht angezeigt werden.

Antwort

2

Versuchen:

<div ng-messages="parentForm['projectName_' + $index + 1].$error"> 
+1

vorsichtig sein, der Verkettung Fragen wie Sie mischen '+' für zwei verschiedene Zwecke. Ich schlage vor, elterForm ['projectName_' + ($ index + 1)] ' – Ankh

+0

@Ankh Lösung funktioniert! Vielen Dank! –