我有一个服务,它返回一个代表用户资金的值,我希望用户能够进行等于或小于总金额的交易.我试过像这样使用max validation:
valid() { const form: FormGroup = this._fb.group({ fond: ['',[Validators.required]],serie: ['',account: ['',[Validators.required,Validators.min(1)]],value: ['',subAccount: ['',Validators.min(1)]] }); return form; }
但是它不起作用,似乎必须从头开始设置max()中的值,因此它将假设totalAmount为undefined.
解决方法
更新已修改的问题:
用这个:
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的当前值创建新的验证函数,从而使其成为动态的.