feat(forms): add options arg to abstract controls
FormControls, FormGroups, and FormArrays now optionally accept an options object as their second argument. Validators and async validators can be passed in as part of this options object (though they can still be passed in as the second and third arg as before). ```ts const c = new FormControl(, { validators: [Validators.required], asyncValidators: [myAsyncValidator] }); ``` This commit also adds support for passing arrays of validators and async validators to FormGroups and FormArrays, which formerly only accepted individual functions. ```ts const g = new FormGroup({ one: new FormControl() }, [myPasswordValidator, myOtherValidator]); ``` This change paves the way for adding more options to AbstractControls, such as more fine-grained control of validation timing.
This commit is contained in:

committed by
Alex Rickabaugh

parent
d71ae278ef
commit
ebef5e697a
6
tools/public_api_guard/forms/forms.d.ts
vendored
6
tools/public_api_guard/forms/forms.d.ts
vendored
@ -175,7 +175,7 @@ export interface Form {
|
||||
export declare class FormArray extends AbstractControl {
|
||||
controls: AbstractControl[];
|
||||
readonly length: number;
|
||||
constructor(controls: AbstractControl[], validator?: ValidatorFn | null, asyncValidator?: AsyncValidatorFn | null);
|
||||
constructor(controls: AbstractControl[], validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null);
|
||||
at(index: number): AbstractControl;
|
||||
getRawValue(): any[];
|
||||
insert(index: number, control: AbstractControl): void;
|
||||
@ -222,7 +222,7 @@ export declare class FormBuilder {
|
||||
|
||||
/** @stable */
|
||||
export declare class FormControl extends AbstractControl {
|
||||
constructor(formState?: any, validator?: ValidatorFn | ValidatorFn[] | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null);
|
||||
constructor(formState?: any, validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null);
|
||||
patchValue(value: any, options?: {
|
||||
onlySelf?: boolean;
|
||||
emitEvent?: boolean;
|
||||
@ -283,7 +283,7 @@ export declare class FormGroup extends AbstractControl {
|
||||
};
|
||||
constructor(controls: {
|
||||
[key: string]: AbstractControl;
|
||||
}, validator?: ValidatorFn | null, asyncValidator?: AsyncValidatorFn | null);
|
||||
}, validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null);
|
||||
addControl(name: string, control: AbstractControl): void;
|
||||
contains(controlName: string): boolean;
|
||||
getRawValue(): any;
|
||||
|
Reference in New Issue
Block a user