From 778f7d6f33713c565c78b4b4b637ecea4c8d4a3e Mon Sep 17 00:00:00 2001 From: Kara Date: Tue, 14 Mar 2017 15:37:51 -0700 Subject: [PATCH] fix(forms): remove equalsTo validator (#15050) This API was introduced only in a beta release, and is being removed because we found it to be incorrect prior to launch. For more information about why this is being removed, see https://github.com/angular/angular/pull/15050. --- packages/forms/src/validators.ts | 24 ------------ packages/forms/test/validators_spec.ts | 38 ------------------- .../public_api_guard/forms/typings/forms.d.ts | 1 - 3 files changed, 63 deletions(-) diff --git a/packages/forms/src/validators.ts b/packages/forms/src/validators.ts index 595be10e90..2db9118cd1 100644 --- a/packages/forms/src/validators.ts +++ b/packages/forms/src/validators.ts @@ -59,30 +59,6 @@ const EMAIL_REGEXP = * @stable */ export class Validators { - /** - * Validator that compares the value of the given FormControls - */ - static equalsTo(...fieldPaths: string[]): ValidatorFn { - return function(control: FormControl): {[key: string]: any} { - if (fieldPaths.length < 1) { - throw new Error('You must compare to at least 1 other field'); - } - - for (let fieldName of fieldPaths) { - let field = (control.parent).get(fieldName); - if (!field) { - throw new Error( - `Field: ${fieldName} undefined, are you sure that ${fieldName} exists in the group`); - } - - if (field.value !== control.value) { - return {'equalsTo': {'unequalField': fieldName}}; - } - } - return null; - }; - } - /** * Validator that requires controls to have a non-empty value. */ diff --git a/packages/forms/test/validators_spec.ts b/packages/forms/test/validators_spec.ts index 78d28126b2..8d2c5aad1f 100644 --- a/packages/forms/test/validators_spec.ts +++ b/packages/forms/test/validators_spec.ts @@ -38,44 +38,6 @@ export function main() { } describe('Validators', () => { - describe('equalsTo', () => { - it('should not error when equal', () => { - let group = new FormGroup({f1: new FormControl('a'), f2: new FormControl('a')}); - let validator = Validators.equalsTo('f2'); - expect(validator(group.controls['f1'])).toBeNull(); - }); - - it('should error when not equal', () => { - let group = new FormGroup({f1: new FormControl('a'), f2: new FormControl('b')}); - let validator = Validators.equalsTo('f2'); - expect(validator(group.controls['f1'])).toEqual({equalsTo: {unequalField: 'f2'}}); - }); - - it('should throw if passed a form control', () => { - let validator = Validators.equalsTo('f1', 'f2'); - // cast it to any so we don't get TS errors - expect(() => validator(new FormGroup({f1: new FormControl('')}))).toThrow(); - }); - - it('should throw if passed a form array', () => { - let validator = Validators.equalsTo('f1', 'f2'); - // cast it to any so we don't get TS errors - expect(() => validator(new FormArray([]))).toThrow(); - }); - - it('should throw if not passed any field to compare', () => { - let validator = Validators.equalsTo(); - expect(() => validator(new FormControl('a'))).toThrow(); - }); - - it('should throw if field passed does not exist in the group', () => { - let group = new FormGroup({f1: new FormControl('a'), f2: new FormControl('b')}); - let validator = Validators.equalsTo('f3', 'f4'); - // cast it to any so we don't get TS errors - expect(() => validator(new FormControl('a'))).toThrow(); - }); - }); - describe('required', () => { it('should error on an empty string', () => { expect(Validators.required(new FormControl(''))).toEqual({'required': true}); }); diff --git a/tools/public_api_guard/forms/typings/forms.d.ts b/tools/public_api_guard/forms/typings/forms.d.ts index 79f72f8f62..3b8461d601 100644 --- a/tools/public_api_guard/forms/typings/forms.d.ts +++ b/tools/public_api_guard/forms/typings/forms.d.ts @@ -554,7 +554,6 @@ export declare class Validators { static email(control: AbstractControl): { [key: string]: boolean; }; - static equalsTo(...fieldPaths: string[]): ValidatorFn; static maxLength(maxLength: number): ValidatorFn; static minLength(minLength: number): ValidatorFn; static nullValidator(c: AbstractControl): {