From f2968ba0e6a0bad98258392e46445b8ed63daa13 Mon Sep 17 00:00:00 2001 From: iRealNirmal Date: Fri, 21 May 2021 21:53:29 +0530 Subject: [PATCH] fix(forms): Add float number support for min and max validator Added float number support for minValidator and maxValidator Closes #42215 --- packages/forms/src/directives/validators.ts | 4 +-- packages/forms/test/validators_spec.ts | 28 +++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/packages/forms/src/directives/validators.ts b/packages/forms/src/directives/validators.ts index eff697b1286e11..88a58029b37bbb 100644 --- a/packages/forms/src/directives/validators.ts +++ b/packages/forms/src/directives/validators.ts @@ -580,7 +580,7 @@ export class MinLengthValidator implements Validator, OnChanges { private _createValidator(): void { this._validator = minLengthValidator( - typeof this.minlength === 'number' ? this.minlength : parseInt(this.minlength, 10)); + typeof this.minlength === 'number' ? this.minlength : parseFloat(this.minlength)); } } @@ -657,7 +657,7 @@ export class MaxLengthValidator implements Validator, OnChanges { private _createValidator(): void { this._validator = maxLengthValidator( - typeof this.maxlength === 'number' ? this.maxlength : parseInt(this.maxlength, 10)); + typeof this.maxlength === 'number' ? this.maxlength : parseFloat(this.maxlength)); } } diff --git a/packages/forms/test/validators_spec.ts b/packages/forms/test/validators_spec.ts index db5d5262d5ba7b..a42c14774ce8af 100644 --- a/packages/forms/test/validators_spec.ts +++ b/packages/forms/test/validators_spec.ts @@ -61,6 +61,20 @@ describe('Validators', () => { expect(Validators.min(2)(new FormControl('1'))).toEqual({'min': {'min': 2, 'actual': '1'}}); }); + it('should not error on small float number validation', () => { + expect(Validators.min(1.20)(new FormControl(1.25))).toBeNull(); + }); + + it('should not error on equal float values', () => { + expect(Validators.min(1.25)(new FormControl(1.25))).toBeNull(); + }); + + it('should return a validation error on big values', () => { + expect(Validators.min(1.25)(new FormControl(1.20))).toEqual({ + 'min': {'min': 1.25, 'actual': 1.20} + }); + }); + it('should not error on big values', () => { expect(Validators.min(2)(new FormControl(3))).toBeNull(); }); @@ -105,6 +119,20 @@ describe('Validators', () => { expect(Validators.max(2)(new FormControl('aaa'))).toBeNull(); }); + it('should not error on small float number validation', () => { + expect(Validators.max(1.20)(new FormControl(1.15))).toBeNull(); + }); + + it('should not error on equal float values', () => { + expect(Validators.max(1.25)(new FormControl(1.25))).toBeNull(); + }); + + it('should return a validation error on big values', () => { + expect(Validators.max(1.25)(new FormControl(1.30))).toEqual({ + 'max': {'max': 1.25, 'actual': 1.30} + }); + }); + it('should return a validation error on big values', () => { expect(Validators.max(2)(new FormControl(3))).toEqual({'max': {'max': 2, 'actual': 3}}); });