feat(forms): Implement a way to manually set errors on a control

Example:

var login = new Control("someLogin");
c.setErrors({"notUnique": true});
expect(c.valid).toEqual(false);
expect(c.errors).toEqual({"notUnique": true});

c.updateValue("newLogin");
expect(c.valid).toEqual(true);

BREAKING CHANGE:

Before:

ControlGroup.errors and ControlArray.errors returned a reduced value of their children controls' errors.

After:

ControlGroup.errors and ControlArray.errors return the errors of the group and array.
And ControlGroup.controlsErrors and ControlArray.controlsErrors return the reduce value of their children controls' errors.

Closes #4917
This commit is contained in:
vsavkin
2015-10-27 11:20:07 -07:00
committed by Victor Savkin
parent 689ded5c47
commit ed4826b08c
11 changed files with 342 additions and 214 deletions

View File

@ -43,9 +43,11 @@ var NG_API = [
'AbstractControl',
'AbstractControl.dirty',
'AbstractControl.errors',
'AbstractControl.controlsErrors',
'AbstractControl.find()',
'AbstractControl.getError()',
'AbstractControl.hasError()',
'AbstractControl.setErrors()',
'AbstractControl.markAsDirty()',
'AbstractControl.markAsPending()',
'AbstractControl.markAsTouched()',
@ -55,7 +57,6 @@ var NG_API = [
'AbstractControl.status',
'AbstractControl.touched',
'AbstractControl.untouched',
'AbstractControl.updateValidity()',
'AbstractControl.updateValueAndValidity()',
'AbstractControl.valid',
'AbstractControl.validator',
@ -66,6 +67,7 @@ var NG_API = [
'AbstractControlDirective.control',
'AbstractControlDirective.dirty',
'AbstractControlDirective.errors',
'AbstractControlDirective.controlsErrors',
'AbstractControlDirective.pristine',
'AbstractControlDirective.touched',
'AbstractControlDirective.untouched',
@ -276,6 +278,7 @@ var NG_API = [
'Control',
'Control.dirty',
'Control.errors',
'Control.controlsErrors',
'Control.find()',
'Control.getError()',
'Control.hasError()',
@ -289,7 +292,6 @@ var NG_API = [
'Control.status',
'Control.touched',
'Control.untouched',
'Control.updateValidity()',
'Control.updateValue()',
'Control.updateValueAndValidity()',
'Control.valid',
@ -297,12 +299,14 @@ var NG_API = [
'Control.validator=',
'Control.value',
'Control.valueChanges',
'Control.setErrors()',
'ControlArray',
'ControlArray.at()',
'ControlArray.controls',
'ControlArray.controls=',
'ControlArray.dirty',
'ControlArray.errors',
'ControlArray.controlsErrors',
'ControlArray.find()',
'ControlArray.getError()',
'ControlArray.hasError()',
@ -319,17 +323,18 @@ var NG_API = [
'ControlArray.status',
'ControlArray.touched',
'ControlArray.untouched',
'ControlArray.updateValidity()',
'ControlArray.updateValueAndValidity()',
'ControlArray.valid',
'ControlArray.validator',
'ControlArray.validator=',
'ControlArray.value',
'ControlArray.valueChanges',
'ControlArray.setErrors()',
'ControlContainer',
'ControlContainer.control',
'ControlContainer.dirty',
'ControlContainer.errors',
'ControlContainer.controlsErrors',
'ControlContainer.formDirective',
'ControlContainer.name',
'ControlContainer.name=',
@ -346,6 +351,7 @@ var NG_API = [
'ControlGroup.controls=',
'ControlGroup.dirty',
'ControlGroup.errors',
'ControlGroup.controlsErrors',
'ControlGroup.exclude()',
'ControlGroup.find()',
'ControlGroup.getError()',
@ -361,13 +367,13 @@ var NG_API = [
'ControlGroup.status',
'ControlGroup.touched',
'ControlGroup.untouched',
'ControlGroup.updateValidity()',
'ControlGroup.updateValueAndValidity()',
'ControlGroup.valid',
'ControlGroup.validator',
'ControlGroup.validator=',
'ControlGroup.value',
'ControlGroup.valueChanges',
'ControlGroup.setErrors()',
'CurrencyPipe',
'CurrencyPipe.transform()',
'CyclicDependencyError',
@ -622,6 +628,7 @@ var NG_API = [
'NgControl.control',
'NgControl.dirty',
'NgControl.errors',
'NgControl.controlsErrors',
'NgControl.name',
'NgControl.name=',
'NgControl.path',
@ -638,6 +645,7 @@ var NG_API = [
'NgControlGroup.control',
'NgControlGroup.dirty',
'NgControlGroup.errors',
'NgControlGroup.controlsErrors',
'NgControlGroup.formDirective',
'NgControlGroup.name',
'NgControlGroup.name=',
@ -660,6 +668,7 @@ var NG_API = [
'NgControlName.control',
'NgControlName.dirty',
'NgControlName.errors',
'NgControlName.controlsErrors',
'NgControlName.formDirective',
'NgControlName.model',
'NgControlName.model=',
@ -694,6 +703,7 @@ var NG_API = [
'NgForm.controls',
'NgForm.dirty',
'NgForm.errors',
'NgForm.controlsErrors',
'NgForm.form',
'NgForm.form=',
'NgForm.formDirective',
@ -717,6 +727,7 @@ var NG_API = [
'NgFormControl.control',
'NgFormControl.dirty',
'NgFormControl.errors',
'NgFormControl.controlsErrors',
'NgFormControl.form',
'NgFormControl.form=',
'NgFormControl.model',
@ -748,6 +759,7 @@ var NG_API = [
'NgFormModel.directives=',
'NgFormModel.dirty',
'NgFormModel.errors',
'NgFormModel.controlsErrors',
'NgFormModel.form',
'NgFormModel.form=',
'NgFormModel.formDirective',
@ -774,6 +786,7 @@ var NG_API = [
'NgModel.control',
'NgModel.dirty',
'NgModel.errors',
'NgModel.controlsErrors',
'NgModel.model',
'NgModel.model=',
'NgModel.name',