2017-08-30 60 views
1

我有一項服務,它返回一個代表金錢用戶的值,並且我希望用戶能夠爲等於或小於總金額的值執行交易。我試圖用最高的驗證這樣的:帶動態值的最大值驗證程序

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

但它不會工作,好像在max()的值必須從一開始就設定,因此它只會承擔總金額爲未定義。

+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

相關問題