docs: clarify docs for runtime validation change (#31596)

PR Close #31596
This commit is contained in:
Judy Bogart 2019-07-16 13:20:27 -07:00 committed by Matias Niemelä
parent 897bd18fbc
commit 54794f9b31
2 changed files with 51 additions and 6 deletions

View File

@ -322,6 +322,10 @@ export abstract class AbstractControl {
/** /**
* Sets the synchronous validators that are active on this control. Calling * Sets the synchronous validators that are active on this control. Calling
* this overwrites any existing sync validators. * this overwrites any existing sync validators.
*
* When you add or remove a validator at run time, you must call
* `updateValueAndValidity()` for the new validation to take effect.
*
*/ */
setValidators(newValidator: ValidatorFn|ValidatorFn[]|null): void { setValidators(newValidator: ValidatorFn|ValidatorFn[]|null): void {
this.validator = coerceToValidator(newValidator); this.validator = coerceToValidator(newValidator);
@ -330,6 +334,10 @@ export abstract class AbstractControl {
/** /**
* Sets the async validators that are active on this control. Calling this * Sets the async validators that are active on this control. Calling this
* overwrites any existing async validators. * overwrites any existing async validators.
*
* When you add or remove a validator at run time, you must call
* `updateValueAndValidity()` for the new validation to take effect.
*
*/ */
setAsyncValidators(newValidator: AsyncValidatorFn|AsyncValidatorFn[]|null): void { setAsyncValidators(newValidator: AsyncValidatorFn|AsyncValidatorFn[]|null): void {
this.asyncValidator = coerceToAsyncValidator(newValidator); this.asyncValidator = coerceToAsyncValidator(newValidator);
@ -337,11 +345,19 @@ export abstract class AbstractControl {
/** /**
* Empties out the sync validator list. * Empties out the sync validator list.
*
* When you add or remove a validator at run time, you must call
* `updateValueAndValidity()` for the new validation to take effect.
*
*/ */
clearValidators(): void { this.validator = null; } clearValidators(): void { this.validator = null; }
/** /**
* Empties out the async validator list. * Empties out the async validator list.
*
* When you add or remove a validator at run time, you must call
* `updateValueAndValidity()` for the new validation to take effect.
*
*/ */
clearAsyncValidators(): void { this.asyncValidator = null; } clearAsyncValidators(): void { this.asyncValidator = null; }

View File

@ -90,6 +90,8 @@ export class Validators {
* @returns A validator function that returns an error map with the * @returns A validator function that returns an error map with the
* `min` property if the validation check fails, otherwise `null`. * `min` property if the validation check fails, otherwise `null`.
* *
* @see `updateValueAndValidity()`
*
*/ */
static min(min: number): ValidatorFn { static min(min: number): ValidatorFn {
return (control: AbstractControl): ValidationErrors | null => { return (control: AbstractControl): ValidationErrors | null => {
@ -121,6 +123,8 @@ export class Validators {
* @returns A validator function that returns an error map with the * @returns A validator function that returns an error map with the
* `max` property if the validation check fails, otherwise `null`. * `max` property if the validation check fails, otherwise `null`.
* *
* @see `updateValueAndValidity()`
*
*/ */
static max(max: number): ValidatorFn { static max(max: number): ValidatorFn {
return (control: AbstractControl): ValidationErrors | null => { return (control: AbstractControl): ValidationErrors | null => {
@ -151,6 +155,8 @@ export class Validators {
* @returns An error map with the `required` property * @returns An error map with the `required` property
* if the validation check fails, otherwise `null`. * if the validation check fails, otherwise `null`.
* *
* @see `updateValueAndValidity()`
*
*/ */
static required(control: AbstractControl): ValidationErrors|null { static required(control: AbstractControl): ValidationErrors|null {
return isEmptyInputValue(control.value) ? {'required': true} : null; return isEmptyInputValue(control.value) ? {'required': true} : null;
@ -173,6 +179,9 @@ export class Validators {
* *
* @returns An error map that contains the `required` property * @returns An error map that contains the `required` property
* set to `true` if the validation check fails, otherwise `null`. * set to `true` if the validation check fails, otherwise `null`.
*
* @see `updateValueAndValidity()`
*
*/ */
static requiredTrue(control: AbstractControl): ValidationErrors|null { static requiredTrue(control: AbstractControl): ValidationErrors|null {
return control.value === true ? null : {'required': true}; return control.value === true ? null : {'required': true};
@ -195,6 +204,8 @@ export class Validators {
* @returns An error map with the `email` property * @returns An error map with the `email` property
* if the validation check fails, otherwise `null`. * if the validation check fails, otherwise `null`.
* *
* @see `updateValueAndValidity()`
*
*/ */
static email(control: AbstractControl): ValidationErrors|null { static email(control: AbstractControl): ValidationErrors|null {
if (isEmptyInputValue(control.value)) { if (isEmptyInputValue(control.value)) {
@ -225,6 +236,9 @@ export class Validators {
* *
* @returns A validator function that returns an error map with the * @returns A validator function that returns an error map with the
* `minlength` if the validation check fails, otherwise `null`. * `minlength` if the validation check fails, otherwise `null`.
*
* @see `updateValueAndValidity()`
*
*/ */
static minLength(minLength: number): ValidatorFn { static minLength(minLength: number): ValidatorFn {
return (control: AbstractControl): ValidationErrors | null => { return (control: AbstractControl): ValidationErrors | null => {
@ -260,6 +274,9 @@ export class Validators {
* *
* @returns A validator function that returns an error map with the * @returns A validator function that returns an error map with the
* `maxlength` property if the validation check fails, otherwise `null`. * `maxlength` property if the validation check fails, otherwise `null`.
*
* @see `updateValueAndValidity()`
*
*/ */
static maxLength(maxLength: number): ValidatorFn { static maxLength(maxLength: number): ValidatorFn {
return (control: AbstractControl): ValidationErrors | null => { return (control: AbstractControl): ValidationErrors | null => {
@ -275,11 +292,6 @@ export class Validators {
* Validator that requires the control's value to match a regex pattern. This validator is also * Validator that requires the control's value to match a regex pattern. This validator is also
* provided by default if you use the HTML5 `pattern` attribute. * provided by default if you use the HTML5 `pattern` attribute.
* *
* Note that if a Regexp is provided, the Regexp is used as is to test the values. On the other
* hand, if a string is passed, the `^` character is prepended and the `$` character is
* appended to the provided string (if not already present), and the resulting regular
* expression is used to test the values.
*
* @usageNotes * @usageNotes
* *
* ### Validate that the field only contains letters or spaces * ### Validate that the field only contains letters or spaces
@ -294,8 +306,16 @@ export class Validators {
* <input pattern="[a-zA-Z ]*"> * <input pattern="[a-zA-Z ]*">
* ``` * ```
* *
* @param pattern A regular expression to be used as is to test the values, or a string.
* If a string is passed, the `^` character is prepended and the `$` character is
* appended to the provided string (if not already present), and the resulting regular
* expression is used to test the values.
*
* @returns A validator function that returns an error map with the * @returns A validator function that returns an error map with the
* `pattern` property if the validation check fails, otherwise `null`. * `pattern` property if the validation check fails, otherwise `null`.
*
* @see `updateValueAndValidity()`
*
*/ */
static pattern(pattern: string|RegExp): ValidatorFn { static pattern(pattern: string|RegExp): ValidatorFn {
if (!pattern) return Validators.nullValidator; if (!pattern) return Validators.nullValidator;
@ -328,6 +348,9 @@ export class Validators {
/** /**
* @description * @description
* Validator that performs no operation. * Validator that performs no operation.
*
* @see `updateValueAndValidity()`
*
*/ */
static nullValidator(control: AbstractControl): ValidationErrors|null { return null; } static nullValidator(control: AbstractControl): ValidationErrors|null { return null; }
@ -338,6 +361,9 @@ export class Validators {
* *
* @returns A validator function that returns an error map with the * @returns A validator function that returns an error map with the
* merged error maps of the validators if the validation check fails, otherwise `null`. * merged error maps of the validators if the validation check fails, otherwise `null`.
*
* @see `updateValueAndValidity()`
*
*/ */
static compose(validators: null): null; static compose(validators: null): null;
static compose(validators: (ValidatorFn|null|undefined)[]): ValidatorFn|null; static compose(validators: (ValidatorFn|null|undefined)[]): ValidatorFn|null;
@ -358,7 +384,10 @@ export class Validators {
* *
* @returns A validator function that returns an error map with the * @returns A validator function that returns an error map with the
* merged error objects of the async validators if the validation check fails, otherwise `null`. * merged error objects of the async validators if the validation check fails, otherwise `null`.
*/ *
* @see `updateValueAndValidity()`
*
*/
static composeAsync(validators: (AsyncValidatorFn|null)[]): AsyncValidatorFn|null { static composeAsync(validators: (AsyncValidatorFn|null)[]): AsyncValidatorFn|null {
if (!validators) return null; if (!validators) return null;
const presentValidators: AsyncValidatorFn[] = validators.filter(isPresent) as any; const presentValidators: AsyncValidatorFn[] = validators.filter(isPresent) as any;