2017-08-30 1 views
1

Ich habe einen Dienst, der einen Wert zurückgibt, der das Geld darstellt, das Benutzer hat, und ich möchte, dass der Benutzer Transaktionen für einen Wert gleich oder weniger als der Gesamtbetrag des Geldes tätigen kann. Ich habe versucht, max Validierung wie folgt zu verwenden:Maximaler Validierer mit dynamischem Wert

valid() { 
     const form: FormGroup = this._fb.group({ 
      fond: ['', [Validators.required]], 
      serie: ['', [Validators.required]], 
      account: ['', [Validators.required, Validators.min(1)]], 
      value: ['', [Validators.required, Validators.min(1)]], 
      subAccount: ['', [Validators.required, Validators.min(1)]] 
     }); 
     return form; 
     } 

Aber es wird nicht funktionieren, es scheint, wie der Wert in max() hat von Anfang an festgelegt werden, so wird es nur TotalAmount als undefiniert nehmen.

+0

Verwenden Sie Pipe. Übergeben Sie diesen dynamischen Wert an Pipe und validieren Sie den Maximalwert. –

+2

Nein, bitte verwenden Sie Pipes nur für die Transformation der Werte. –

Antwort

4

Update für Ihre editierten Frage:

verwenden:

value: ['', [ 
    Validators.required, 
    Validators.min(1), 
    (control: AbstractControl) => Validators.max(this.totalAmount)(control) 
]] 

Sie können dies erreichen, indem Sie diese Syntax:

(control: AbstractControl) => Validators.max(this.totalAmount)(control) 

Warum?

  • Wenn Sie liefern Validators.max(this.totalAmount), erstellt es eine Validierungsfunktion mit dem gegebenen Parameter (aktueller Wert von this.totalAmount) weisen sie dann zu der Formsteuerung.
  • Wenn Sie die Fettpfeilfunktion verwenden, wird dem Formularsteuerelement die Fettpfeildefinition zugewiesen. Jedes Mal, wenn die Fettpfeil-Funktion aufgerufen wird (während der Gültigkeitsprüfung), wertet sie die Validators.max(this.totalAmount) neu aus und erstellt eine neue Validierungsfunktion mit dem aktuellen Wert this.totalAmount, wodurch sie dynamisch wird.
+0

können Sie einige Scheinwerfer über diese Syntax geben? Ich habe die Frage mit dem Code aktualisiert, den ich für Validierungen verwende, wie soll ich das implementieren? "Wert" ist derjenige, den ich validieren möchte. – Miguelopezv

Verwandte Themen