Skip to content

Commit

Permalink
fix(forms): Add float number support for min and max validator
Browse files Browse the repository at this point in the history
Added float number support for minValidator and maxValidator

Closes #42215
  • Loading branch information
iRealNirmal committed May 21, 2021
1 parent d2a89db commit f2968ba
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 2 deletions.
4 changes: 2 additions & 2 deletions packages/forms/src/directives/validators.ts
Expand Up @@ -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));
}
}

Expand Down Expand Up @@ -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));
}
}

Expand Down
28 changes: 28 additions & 0 deletions packages/forms/test/validators_spec.ts
Expand Up @@ -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();
});
Expand Down Expand Up @@ -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}});
});
Expand Down

0 comments on commit f2968ba

Please sign in to comment.