2017-08-30 19 views
1

私は、ユーザーが持っている金額を表す値を返すサービスを持っています。ユーザーは、合計金額と等しいかそれ以下の金額で取引を行うことができます。それが最初から設定されている必要がありmax()の値のように思えるので、それはちょうど未定義としてtotalAmountを仮定します、動的値を持つ最大値バリデータ

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

しかし、それは動作しません:私はこのような最高の検証を使用することを試みました。あなたの編集した質問に対する

+0

パイプを使用します。この動的値をパイプに渡し、最大値を確認してください –

+2

いいえ、値を変換する以外にパイプを使用しないでください。 –

答えて

4

更新:あなたはこの構文を使用していることを達成することができます

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

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

なぜ?

これを使用しますか

  • もしValidators.max(this.totalAmount)を供給する場合には、その後、フォームコントロールに割り当てる所定のパラメータ(this.totalAmountの現在の値)と検証関数を作成します。
  • 太矢印機能を使用すると、太字の矢印定義自体がフォームコントロールに割り当てられます。太字の矢印機能が呼び出されるたびに(有効性チェック中)、Validators.max(this.totalAmount)が再評価され、現在の値this.totalAmountで新しい検証機能が作成され、動的になります。
+0

この構文についていくつかのヘッドライトを付けることができますか?検証のために使用するコードで質問を更新しました。どのように実装する必要がありますか? '値'は私が検証したいものです。 – Miguelopezv

関連する問題