2016-03-23 13 views
3

Ich habe gerade versucht, ngMessages in meine App einzuführen, die Komponenten verwendet, die in 1.5 hinzugefügt wurden. Sobald ich einen Hinweis auf ngMessage in meiner Vorlage enthalten Ich erhalte diese Fehlermeldung:ngMessages mit Angular 1.5.x Komponente

Error: $compile:ctreq Missing Required Controller.

This is a common error with ngMessages and the normal remedy is suggested here: https://docs.angularjs.org/error/ $compile/ctreq?p0=ngMessages&p1=ngMessage

Aber ich bin mit Komponenten, die eine besondere Art der Richtlinie sind, und dies scheint nicht zu sein eine Option für Komponenten.

Hat jemand ngMessages bekommen innerhalb eines Komponente in 1.5 zu arbeiten?

Die Syntax für die Verwendung mit einer Anweisung ist wie folgt:

myApp.directive('myDirective', function() { 
    return { 
    require: 'ngModel', 
    ... 
    } 
} 

Die Komponente Dokumentation: https://docs.angularjs.org/guide/component kein Äquivalent zu require bedecken.

+2

Warum die unten Abstimmung ohne Erklärung? –

+0

Upvoted :) Wenn ich den Vergleich zwischen Direktive und Komponente überprüfe, sieht es so aus, als akzeptierten beide die erforderliche Konfiguration https://docs.angularjs.org/guide/component#comparison-between-directive-definition-and-component-definition –

+0

Siehe meinen Kommentar zur akzeptierten Antwort. Es scheint, dass eine Anforderung nicht notwendig ist. (Ich habe es tatsächlich ausprobiert.) Das Problem war mein Fehlen der äußeren ng-Nachrichten div. –

Antwort

1

Dies könnte Ihnen helfen.

<form name="userLoginForm" autocomplete="off"> 
    <input type="text" minlength="10" maxlength="10" ng-pattern="/^[0-9]+$/" required ng-model="userData.mobileNumber" placeholder="Enter Mobile Number" class="form-control login-form-input" id="mobileNumber" name="mobileNumberInput"/> 
    <div ng-messages="userLoginForm.mobileNumberInput.$error" role="alert"> 
     <div ng-message="required"> 
      This field is required 
     </div> 
     <div ng-message="pattern"> 
     Enter correct mobile number 
     </div> 
     <div ng-message="minlength, maxlength"> 
      Your mobile number must 10 characters long</div> 
     </div> 
    </div> 

+0

Es stellt sich heraus, dass dies tatsächlich hilfreich war. Ich habe das äußere div übersehen und das ist tatsächlich, was den Fehler verursacht. Die Fehlermeldung und Dokumentation sind sehr irreführend. –

+1

Es ist witzig, wie das OP über eine Ablehnung der Frage ohne Erklärung klagt, aber als diese Antwort dem OP half, konnten sie sich nicht darum kümmern, es zu wählen. –

+1

Eigentlich habe ich es ursprünglich abgelehnt und zu gewissen Zeitbeschränkungen getan, ich durfte die Down Vote nicht ändern. Deshalb habe ich den Kommentar direkt über deinem hinzugefügt und die Antwort akzeptiert. –

0

Es passiert, wenn Sie nicht richtig div Struktur haben. Das erste div muss ng-messages enthalten, und das erste div muss ng-messages enthalten. Von Dokumentation:

<ANY **ng-messages**="expression" role="alert"> 
    <ANY **ng-message**="stringValue">...</ANY> 
</ANY> 

Angular Debug-Nachricht ist in diesem Fall nicht hilfreich und mehr Verwirrung stiften.

Verwandte Themen