Mig*_*ezv 6 angular angular4-forms
我有一个服务,它返回一个代表用户资金的值,我希望用户能够进行等于或小于总金额的交易.我试过像这样使用max validation:
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;
}
Run Code Online (Sandbox Code Playgroud)
但是它不起作用,似乎max()必须从头开始设置值,所以它只是假定totalAmount为undefined.
Har*_*inh 19
更新已修改的问题:
用这个:
value: ['', [
Validators.required,
Validators.min(1),
(control: AbstractControl) => Validators.max(this.totalAmount)(control)
]]
Run Code Online (Sandbox Code Playgroud)
您可以使用以下语法实现此目的:
(control: AbstractControl) => Validators.max(this.totalAmount)(control)
Run Code Online (Sandbox Code Playgroud)
为什么?
Validators.max(this.totalAmount),它会使用给定参数(当前值this.totalAmount)创建验证函数,然后将其分配给表单控件.Validators.max(this.totalAmount)并使用当前值创建新的验证函数this.totalAmount,从而使其成为动态.