Ich versuche Angulars ngMessages eine benutzerdefinierte Validierungsfunktion hinzuzufügen.Angular ngMessages - Zugriff auf mehrere Formularwerte
Insbesondere möchte ich den Wert von ein paar Eingänge (die Anzahl der Eingänge wird dynamisch sein, aber jetzt halten mit 2) 100.
auf insgesamt Ich habe eine neue Richtlinie totalOneHundred
die aufgerufen erstellt Triggern auf eine Formularänderung, aber ich kann nicht herausfinden, wie auf andere Formularwerte vom link:
Rückruf zugegriffen wird.
Ich habe meinen Code unten gepostet. Gibt es etwas, das mir fehlt? Wenn es einen besseren Weg gibt, dies zu erreichen (eine sum()
Funktion in der Steuerung und eine ng-show
zum Beispiel), rufen Sie mich bitte an.
Danke für Ihre Hilfe.
Die Form:
<!-- input box to be validated -->
<input type="number" class="form-control" name="lowBound" ng-model="ctrl.lowBound" total-one-hundred required>
<!-- validation messages -->
<div ng-messages="form['lowBound'].$error" role="alert">
<div ng-message="required">Cannot be empty</div>
<div ng-message="totalOneHundred">Sum of tasks must = 100</div>
</div>
<!-- input box to be validated -->
<input type="number" class="form-control" name="highBound" ng-model="ctrl.highBound" total-one-hundred required>
<!-- validation messages -->
<div ng-messages="form['highBound'].$error" role="alert">
<div ng-message="required">Cannot be empty</div>
<div ng-message="totalOneHundred">Sum of tasks must = 100</div>
</div>
Die Richtlinie:
return {
restrict: "A",
require: ["^^form", "ngModel"],
link: function(scope, element, attributes, controllers) {
// At first, form is assigned the actual form controller...
const form = controllers[0];
const model = controllers[1];
model.$validators.totalOneHundred = function (modelValue, form, element, scope) {
// however, the value of form here is "1".
// modelValue is the value of the triggering input,
// but how can I access the other form inputs?
return true;
};
}
};
Vielen Dank für die ausführliche Antwort. Ich versuche wahrscheinlich, die Winkelvalidierung ein wenig zu weit zu treiben. Ich werde mir die Ressourcen ansehen, die Sie verlinkt haben, und sehen, was für meinen Anwendungsfall am besten passt. Danke noch einmal! – Mac