| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare abstract class AbstractControl { | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     asyncValidator: AsyncValidatorFn | null; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly dirty: boolean; | 
					
						
							|  |  |  |     readonly disabled: boolean; | 
					
						
							|  |  |  |     readonly enabled: boolean; | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  |     readonly errors: ValidationErrors | null; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly invalid: boolean; | 
					
						
							|  |  |  |     readonly parent: FormGroup | FormArray; | 
					
						
							|  |  |  |     readonly pending: boolean; | 
					
						
							|  |  |  |     readonly pristine: boolean; | 
					
						
							|  |  |  |     readonly root: AbstractControl; | 
					
						
							|  |  |  |     readonly status: string; | 
					
						
							|  |  |  |     readonly statusChanges: Observable<any>; | 
					
						
							|  |  |  |     readonly touched: boolean; | 
					
						
							|  |  |  |     readonly untouched: boolean; | 
					
						
							| 
									
										
										
										
											2017-08-09 15:41:53 -07:00
										 |  |  |     readonly updateOn: FormHooks; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly valid: boolean; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     validator: ValidatorFn | null; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly value: any; | 
					
						
							|  |  |  |     readonly valueChanges: Observable<any>; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     constructor(validator: ValidatorFn | null, asyncValidator: AsyncValidatorFn | null); | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     clearAsyncValidators(): void; | 
					
						
							|  |  |  |     clearValidators(): void; | 
					
						
							| 
									
										
										
										
											2017-06-12 10:59:29 -07:00
										 |  |  |     disable(opts?: { | 
					
						
							| 
									
										
										
										
											2016-08-24 16:58:43 -07:00
										 |  |  |         onlySelf?: boolean; | 
					
						
							|  |  |  |         emitEvent?: boolean; | 
					
						
							|  |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2017-06-12 10:59:29 -07:00
										 |  |  |     enable(opts?: { | 
					
						
							| 
									
										
										
										
											2016-08-24 16:58:43 -07:00
										 |  |  |         onlySelf?: boolean; | 
					
						
							|  |  |  |         emitEvent?: boolean; | 
					
						
							|  |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     get(path: Array<string | number> | string): AbstractControl | null; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     getError(errorCode: string, path?: string[]): any; | 
					
						
							|  |  |  |     hasError(errorCode: string, path?: string[]): boolean; | 
					
						
							| 
									
										
										
										
											2017-06-12 10:59:29 -07:00
										 |  |  |     markAsDirty(opts?: { | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |         onlySelf?: boolean; | 
					
						
							|  |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2017-06-12 10:59:29 -07:00
										 |  |  |     markAsPending(opts?: { | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |         onlySelf?: boolean; | 
					
						
							| 
									
										
										
										
											2017-11-06 21:59:09 +13:00
										 |  |  |         emitEvent?: boolean; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2017-06-12 10:59:29 -07:00
										 |  |  |     markAsPristine(opts?: { | 
					
						
							| 
									
										
										
										
											2016-07-12 15:02:25 -07:00
										 |  |  |         onlySelf?: boolean; | 
					
						
							|  |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2017-06-12 10:59:29 -07:00
										 |  |  |     markAsTouched(opts?: { | 
					
						
							| 
									
										
										
										
											2016-07-01 15:36:04 -07:00
										 |  |  |         onlySelf?: boolean; | 
					
						
							|  |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2017-06-12 10:59:29 -07:00
										 |  |  |     markAsUntouched(opts?: { | 
					
						
							| 
									
										
										
										
											2016-07-12 15:02:25 -07:00
										 |  |  |         onlySelf?: boolean; | 
					
						
							|  |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2016-08-05 13:35:17 -07:00
										 |  |  |     abstract patchValue(value: any, options?: Object): void; | 
					
						
							| 
									
										
										
										
											2016-07-12 15:02:25 -07:00
										 |  |  |     abstract reset(value?: any, options?: Object): void; | 
					
						
							| 
									
										
										
										
											2017-11-10 21:09:22 +13:00
										 |  |  |     setAsyncValidators(newValidator: AsyncValidatorFn | AsyncValidatorFn[] | null): void; | 
					
						
							| 
									
										
										
										
											2017-06-12 10:59:29 -07:00
										 |  |  |     setErrors(errors: ValidationErrors | null, opts?: { | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |         emitEvent?: boolean; | 
					
						
							|  |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     setParent(parent: FormGroup | FormArray): void; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     setValidators(newValidator: ValidatorFn | ValidatorFn[] | null): void; | 
					
						
							| 
									
										
										
										
											2016-08-05 13:35:17 -07:00
										 |  |  |     abstract setValue(value: any, options?: Object): void; | 
					
						
							| 
									
										
										
										
											2017-06-12 10:59:29 -07:00
										 |  |  |     updateValueAndValidity(opts?: { | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |         onlySelf?: boolean; | 
					
						
							|  |  |  |         emitEvent?: boolean; | 
					
						
							|  |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare abstract class AbstractControlDirective { | 
					
						
							| 
									
										
										
										
											2017-09-28 13:36:56 -07:00
										 |  |  |     readonly abstract control: AbstractControl | null; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     readonly dirty: boolean | null; | 
					
						
							|  |  |  |     readonly disabled: boolean | null; | 
					
						
							|  |  |  |     readonly enabled: boolean | null; | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  |     readonly errors: ValidationErrors | null; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     readonly invalid: boolean | null; | 
					
						
							|  |  |  |     readonly path: string[] | null; | 
					
						
							|  |  |  |     readonly pending: boolean | null; | 
					
						
							|  |  |  |     readonly pristine: boolean | null; | 
					
						
							| 
									
										
										
										
											2017-08-05 09:59:32 +12:00
										 |  |  |     readonly status: string | null; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     readonly statusChanges: Observable<any> | null; | 
					
						
							|  |  |  |     readonly touched: boolean | null; | 
					
						
							|  |  |  |     readonly untouched: boolean | null; | 
					
						
							|  |  |  |     readonly valid: boolean | null; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly value: any; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     readonly valueChanges: Observable<any> | null; | 
					
						
							| 
									
										
										
										
											2016-10-19 18:49:02 +02:00
										 |  |  |     getError(errorCode: string, path?: string[]): any; | 
					
						
							|  |  |  |     hasError(errorCode: string, path?: string[]): boolean; | 
					
						
							| 
									
										
										
										
											2016-07-12 15:02:25 -07:00
										 |  |  |     reset(value?: any): void; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-01 11:25:14 +08:00
										 |  |  | /** @experimental */ | 
					
						
							|  |  |  | export interface AbstractControlOptions { | 
					
						
							|  |  |  |     asyncValidators?: AsyncValidatorFn | AsyncValidatorFn[] | null; | 
					
						
							|  |  |  |     updateOn?: 'change' | 'blur' | 'submit'; | 
					
						
							|  |  |  |     validators?: ValidatorFn | ValidatorFn[] | null; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-07-07 20:14:42 -07:00
										 |  |  | export declare class AbstractFormGroupDirective extends ControlContainer implements OnInit, OnDestroy { | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     readonly asyncValidator: AsyncValidatorFn | null; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly control: FormGroup; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     readonly formDirective: Form | null; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly path: string[]; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     readonly validator: ValidatorFn | null; | 
					
						
							| 
									
										
										
										
											2016-07-07 20:14:42 -07:00
										 |  |  |     ngOnDestroy(): void; | 
					
						
							|  |  |  |     ngOnInit(): void; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-21 03:26:51 +03:00
										 |  |  | /** @experimental */ | 
					
						
							|  |  |  | export interface AsyncValidator extends Validator { | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  |     validate(c: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null>; | 
					
						
							| 
									
										
										
										
											2017-02-21 03:26:51 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-24 18:24:11 -07:00
										 |  |  | export interface AsyncValidatorFn { | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  |     (c: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null>; | 
					
						
							| 
									
										
										
										
											2016-06-24 18:24:11 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare class CheckboxControlValueAccessor implements ControlValueAccessor { | 
					
						
							|  |  |  |     onChange: (_: any) => void; | 
					
						
							|  |  |  |     onTouched: () => void; | 
					
						
							| 
									
										
										
										
											2017-06-20 11:35:16 +02:00
										 |  |  |     constructor(_renderer: Renderer2, _elementRef: ElementRef); | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     registerOnChange(fn: (_: any) => {}): void; | 
					
						
							|  |  |  |     registerOnTouched(fn: () => {}): void; | 
					
						
							| 
									
										
										
										
											2016-08-24 16:58:43 -07:00
										 |  |  |     setDisabledState(isDisabled: boolean): void; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     writeValue(value: any): void; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-10 13:44:04 +03:00
										 |  |  | /** @experimental */ | 
					
						
							|  |  |  | export declare class CheckboxRequiredValidator extends RequiredValidator { | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  |     validate(c: AbstractControl): ValidationErrors | null; | 
					
						
							| 
									
										
										
										
											2016-12-10 13:44:04 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												fix(forms): make composition event buffering configurable (#15256)
This commit fixes a regression where `ngModel` no longer syncs
letter by letter on Android devices, and instead syncs at the
end of every word. This broke when we introduced buffering of
IME events so IMEs like Pinyin keyboards or Katakana keyboards
wouldn't display composition strings. Unfortunately, iOS devices
and Android devices have opposite event behavior. Whereas iOS
devices fire composition events for IME keyboards only, Android
fires composition events for Latin-language keyboards. For
this reason, languages like English don't work as expected on
Android if we always buffer. So to support both platforms,
composition string buffering will only be turned on by default
for non-Android devices.
However, we have also added a `COMPOSITION_BUFFER_MODE` token
to make this configurable by the application. In some cases, apps
might might still want to receive intermediate values. For example,
some inputs begin searching based on Latin letters before a
character selection is made.
As a provider, this is fairly flexible. If you want to turn
composition buffering off, simply provide the token at the top
level:
```ts
providers: [
   {provide: COMPOSITION_BUFFER_MODE, useValue: false}
]
```
Or, if you want to change the mode  based on locale or platform,
you can use a factory:
```ts
import {shouldUseBuffering} from 'my/lib';
....
providers: [
   {provide: COMPOSITION_BUFFER_MODE, useFactory: shouldUseBuffering}
]
```
Closes #15079.
PR Close #15256
											
										 
											2017-03-20 17:38:33 -07:00
										 |  |  | /** @experimental */ | 
					
						
							|  |  |  | export declare const COMPOSITION_BUFFER_MODE: InjectionToken<boolean>; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  | export declare abstract class ControlContainer extends AbstractControlDirective { | 
					
						
							|  |  |  |     readonly formDirective: Form | null; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     name: string; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     readonly path: string[] | null; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export interface ControlValueAccessor { | 
					
						
							|  |  |  |     registerOnChange(fn: any): void; | 
					
						
							|  |  |  |     registerOnTouched(fn: any): void; | 
					
						
							| 
									
										
										
										
											2016-08-24 16:58:43 -07:00
										 |  |  |     setDisabledState?(isDisabled: boolean): void; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     writeValue(obj: any): void; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare class DefaultValueAccessor implements ControlValueAccessor { | 
					
						
							|  |  |  |     onChange: (_: any) => void; | 
					
						
							|  |  |  |     onTouched: () => void; | 
					
						
							| 
									
										
										
										
											2017-06-20 11:35:16 +02:00
										 |  |  |     constructor(_renderer: Renderer2, _elementRef: ElementRef, _compositionMode: boolean); | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     registerOnChange(fn: (_: any) => void): void; | 
					
						
							|  |  |  |     registerOnTouched(fn: () => void): void; | 
					
						
							| 
									
										
										
										
											2016-08-24 16:58:43 -07:00
										 |  |  |     setDisabledState(isDisabled: boolean): void; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     writeValue(value: any): void; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-29 20:07:02 +03:00
										 |  |  | /** @experimental */ | 
					
						
							|  |  |  | export declare class EmailValidator implements Validator { | 
					
						
							|  |  |  |     email: boolean | string; | 
					
						
							|  |  |  |     registerOnValidatorChange(fn: () => void): void; | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  |     validate(c: AbstractControl): ValidationErrors | null; | 
					
						
							| 
									
										
										
										
											2016-12-29 20:07:02 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-23 21:36:34 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export interface Form { | 
					
						
							|  |  |  |     addControl(dir: NgControl): void; | 
					
						
							|  |  |  |     addFormGroup(dir: AbstractFormGroupDirective): void; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     getControl(dir: NgControl): FormControl; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     getFormGroup(dir: AbstractFormGroupDirective): FormGroup; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     removeControl(dir: NgControl): void; | 
					
						
							|  |  |  |     removeFormGroup(dir: AbstractFormGroupDirective): void; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     updateModel(dir: NgControl, value: any): void; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare class FormArray extends AbstractControl { | 
					
						
							|  |  |  |     controls: AbstractControl[]; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly length: number; | 
					
						
							| 
									
										
										
										
											2017-07-25 15:01:04 -07:00
										 |  |  |     constructor(controls: AbstractControl[], validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null); | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     at(index: number): AbstractControl; | 
					
						
							| 
									
										
										
										
											2016-08-24 16:58:43 -07:00
										 |  |  |     getRawValue(): any[]; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     insert(index: number, control: AbstractControl): void; | 
					
						
							| 
									
										
										
										
											2017-04-27 13:39:21 -07:00
										 |  |  |     patchValue(value: any[], options?: { | 
					
						
							| 
									
										
										
										
											2016-08-05 13:35:17 -07:00
										 |  |  |         onlySelf?: boolean; | 
					
						
							| 
									
										
										
										
											2016-10-19 18:54:54 +02:00
										 |  |  |         emitEvent?: boolean; | 
					
						
							| 
									
										
										
										
											2016-08-05 13:35:17 -07:00
										 |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     push(control: AbstractControl): void; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     removeAt(index: number): void; | 
					
						
							| 
									
										
										
										
											2017-04-27 13:39:21 -07:00
										 |  |  |     reset(value?: any, options?: { | 
					
						
							| 
									
										
										
										
											2016-07-12 15:02:25 -07:00
										 |  |  |         onlySelf?: boolean; | 
					
						
							| 
									
										
										
										
											2016-10-19 18:54:54 +02:00
										 |  |  |         emitEvent?: boolean; | 
					
						
							| 
									
										
										
										
											2016-07-12 15:02:25 -07:00
										 |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2016-09-02 15:57:35 -07:00
										 |  |  |     setControl(index: number, control: AbstractControl): void; | 
					
						
							| 
									
										
										
										
											2017-04-27 13:39:21 -07:00
										 |  |  |     setValue(value: any[], options?: { | 
					
						
							| 
									
										
										
										
											2016-07-08 13:04:25 -07:00
										 |  |  |         onlySelf?: boolean; | 
					
						
							| 
									
										
										
										
											2016-10-19 18:54:54 +02:00
										 |  |  |         emitEvent?: boolean; | 
					
						
							| 
									
										
										
										
											2016-07-08 13:04:25 -07:00
										 |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-25 13:27:29 -07:00
										 |  |  | export declare class FormArrayName extends ControlContainer implements OnInit, OnDestroy { | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     readonly asyncValidator: AsyncValidatorFn | null; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly control: FormArray; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     readonly formDirective: FormGroupDirective | null; | 
					
						
							| 
									
										
										
										
											2016-06-25 13:27:29 -07:00
										 |  |  |     name: string; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly path: string[]; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     readonly validator: ValidatorFn | null; | 
					
						
							| 
									
										
										
										
											2016-06-25 13:27:29 -07:00
										 |  |  |     constructor(parent: ControlContainer, validators: any[], asyncValidators: any[]); | 
					
						
							|  |  |  |     ngOnDestroy(): void; | 
					
						
							|  |  |  |     ngOnInit(): void; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare class FormBuilder { | 
					
						
							| 
									
										
										
										
											2017-12-03 21:48:45 +01:00
										 |  |  |     array(controlsConfig: any[], validator?: ValidatorFn | ValidatorFn[] | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null): FormArray; | 
					
						
							| 
									
										
										
										
											2017-12-09 19:17:49 +01:00
										 |  |  |     control(formState: any, validator?: ValidatorFn | ValidatorFn[] | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null): FormControl; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     group(controlsConfig: { | 
					
						
							|  |  |  |         [key: string]: any; | 
					
						
							|  |  |  |     }, extra?: { | 
					
						
							|  |  |  |         [key: string]: any; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     } | null): FormGroup; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare class FormControl extends AbstractControl { | 
					
						
							| 
									
										
										
										
											2017-07-25 15:01:04 -07:00
										 |  |  |     constructor(formState?: any, validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null); | 
					
						
							| 
									
										
										
										
											2016-08-05 13:35:17 -07:00
										 |  |  |     patchValue(value: any, options?: { | 
					
						
							|  |  |  |         onlySelf?: boolean; | 
					
						
							|  |  |  |         emitEvent?: boolean; | 
					
						
							|  |  |  |         emitModelToViewChange?: boolean; | 
					
						
							|  |  |  |         emitViewToModelChange?: boolean; | 
					
						
							|  |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     registerOnChange(fn: Function): void; | 
					
						
							| 
									
										
										
										
											2016-08-24 16:58:43 -07:00
										 |  |  |     registerOnDisabledChange(fn: (isDisabled: boolean) => void): void; | 
					
						
							| 
									
										
										
										
											2017-04-27 13:39:21 -07:00
										 |  |  |     reset(formState?: any, options?: { | 
					
						
							| 
									
										
										
										
											2016-07-12 15:02:25 -07:00
										 |  |  |         onlySelf?: boolean; | 
					
						
							| 
									
										
										
										
											2016-10-19 18:54:54 +02:00
										 |  |  |         emitEvent?: boolean; | 
					
						
							| 
									
										
										
										
											2016-07-12 15:02:25 -07:00
										 |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2017-04-27 13:39:21 -07:00
										 |  |  |     setValue(value: any, options?: { | 
					
						
							| 
									
										
										
										
											2016-08-05 13:35:17 -07:00
										 |  |  |         onlySelf?: boolean; | 
					
						
							|  |  |  |         emitEvent?: boolean; | 
					
						
							|  |  |  |         emitModelToViewChange?: boolean; | 
					
						
							|  |  |  |         emitViewToModelChange?: boolean; | 
					
						
							|  |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare class FormControlDirective extends NgControl implements OnChanges { | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     readonly asyncValidator: AsyncValidatorFn | null; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly control: FormControl; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     form: FormControl; | 
					
						
							| 
									
										
										
										
											2016-08-25 14:56:31 -07:00
										 |  |  |     isDisabled: boolean; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     model: any; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly path: string[]; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     update: EventEmitter<{}>; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     readonly validator: ValidatorFn | null; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     viewModel: any; | 
					
						
							| 
									
										
										
										
											2017-02-21 03:26:51 +03:00
										 |  |  |     constructor(validators: Array<Validator | ValidatorFn>, asyncValidators: Array<AsyncValidator | AsyncValidatorFn>, valueAccessors: ControlValueAccessor[]); | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     ngOnChanges(changes: SimpleChanges): void; | 
					
						
							|  |  |  |     viewToModelUpdate(newValue: any): void; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare class FormControlName extends NgControl implements OnChanges, OnDestroy { | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly asyncValidator: AsyncValidatorFn; | 
					
						
							|  |  |  |     readonly control: FormControl; | 
					
						
							|  |  |  |     readonly formDirective: any; | 
					
						
							| 
									
										
										
										
											2016-08-25 14:56:31 -07:00
										 |  |  |     isDisabled: boolean; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     model: any; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     name: string; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly path: string[]; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     update: EventEmitter<{}>; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     readonly validator: ValidatorFn | null; | 
					
						
							| 
									
										
										
										
											2017-02-21 03:26:51 +03:00
										 |  |  |     constructor(parent: ControlContainer, validators: Array<Validator | ValidatorFn>, asyncValidators: Array<AsyncValidator | AsyncValidatorFn>, valueAccessors: ControlValueAccessor[]); | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     ngOnChanges(changes: SimpleChanges): void; | 
					
						
							|  |  |  |     ngOnDestroy(): void; | 
					
						
							|  |  |  |     viewToModelUpdate(newValue: any): void; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare class FormGroup extends AbstractControl { | 
					
						
							|  |  |  |     controls: { | 
					
						
							|  |  |  |         [key: string]: AbstractControl; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |     constructor(controls: { | 
					
						
							|  |  |  |         [key: string]: AbstractControl; | 
					
						
							| 
									
										
										
										
											2017-07-25 15:01:04 -07:00
										 |  |  |     }, validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null); | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     addControl(name: string, control: AbstractControl): void; | 
					
						
							|  |  |  |     contains(controlName: string): boolean; | 
					
						
							| 
									
										
										
										
											2016-11-09 02:44:36 +03:00
										 |  |  |     getRawValue(): any; | 
					
						
							| 
									
										
										
										
											2016-08-05 13:35:17 -07:00
										 |  |  |     patchValue(value: { | 
					
						
							|  |  |  |         [key: string]: any; | 
					
						
							| 
									
										
										
										
											2017-04-27 13:39:21 -07:00
										 |  |  |     }, options?: { | 
					
						
							| 
									
										
										
										
											2016-08-05 13:35:17 -07:00
										 |  |  |         onlySelf?: boolean; | 
					
						
							| 
									
										
										
										
											2016-10-19 18:54:54 +02:00
										 |  |  |         emitEvent?: boolean; | 
					
						
							| 
									
										
										
										
											2016-08-05 13:35:17 -07:00
										 |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     registerControl(name: string, control: AbstractControl): AbstractControl; | 
					
						
							|  |  |  |     removeControl(name: string): void; | 
					
						
							| 
									
										
										
										
											2017-04-27 13:39:21 -07:00
										 |  |  |     reset(value?: any, options?: { | 
					
						
							| 
									
										
										
										
											2016-07-12 15:02:25 -07:00
										 |  |  |         onlySelf?: boolean; | 
					
						
							| 
									
										
										
										
											2016-10-19 18:54:54 +02:00
										 |  |  |         emitEvent?: boolean; | 
					
						
							| 
									
										
										
										
											2016-07-12 15:02:25 -07:00
										 |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2016-09-02 15:57:35 -07:00
										 |  |  |     setControl(name: string, control: AbstractControl): void; | 
					
						
							| 
									
										
										
										
											2016-08-05 13:35:17 -07:00
										 |  |  |     setValue(value: { | 
					
						
							| 
									
										
										
										
											2016-07-08 13:04:25 -07:00
										 |  |  |         [key: string]: any; | 
					
						
							| 
									
										
										
										
											2017-04-27 13:39:21 -07:00
										 |  |  |     }, options?: { | 
					
						
							| 
									
										
										
										
											2016-07-08 13:04:25 -07:00
										 |  |  |         onlySelf?: boolean; | 
					
						
							| 
									
										
										
										
											2016-10-19 18:54:54 +02:00
										 |  |  |         emitEvent?: boolean; | 
					
						
							| 
									
										
										
										
											2016-07-08 13:04:25 -07:00
										 |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare class FormGroupDirective extends ControlContainer implements Form, OnChanges { | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly control: FormGroup; | 
					
						
							| 
									
										
										
										
											2016-09-02 15:57:35 -07:00
										 |  |  |     directives: FormControlName[]; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     form: FormGroup; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly formDirective: Form; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     ngSubmit: EventEmitter<{}>; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly path: string[]; | 
					
						
							|  |  |  |     readonly submitted: boolean; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     constructor(_validators: any[], _asyncValidators: any[]); | 
					
						
							| 
									
										
										
										
											2016-09-02 15:57:35 -07:00
										 |  |  |     addControl(dir: FormControlName): FormControl; | 
					
						
							| 
									
										
										
										
											2016-06-25 13:27:29 -07:00
										 |  |  |     addFormArray(dir: FormArrayName): void; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     addFormGroup(dir: FormGroupName): void; | 
					
						
							| 
									
										
										
										
											2016-09-02 15:57:35 -07:00
										 |  |  |     getControl(dir: FormControlName): FormControl; | 
					
						
							| 
									
										
										
										
											2016-06-25 13:27:29 -07:00
										 |  |  |     getFormArray(dir: FormArrayName): FormArray; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     getFormGroup(dir: FormGroupName): FormGroup; | 
					
						
							|  |  |  |     ngOnChanges(changes: SimpleChanges): void; | 
					
						
							| 
									
										
										
										
											2016-07-12 15:02:25 -07:00
										 |  |  |     onReset(): void; | 
					
						
							| 
									
										
										
										
											2016-10-11 23:49:36 +01:00
										 |  |  |     onSubmit($event: Event): boolean; | 
					
						
							| 
									
										
										
										
											2016-09-02 15:57:35 -07:00
										 |  |  |     removeControl(dir: FormControlName): void; | 
					
						
							| 
									
										
										
										
											2016-06-25 13:27:29 -07:00
										 |  |  |     removeFormArray(dir: FormArrayName): void; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     removeFormGroup(dir: FormGroupName): void; | 
					
						
							| 
									
										
										
										
											2016-08-11 23:27:33 -07:00
										 |  |  |     resetForm(value?: any): void; | 
					
						
							| 
									
										
										
										
											2016-09-02 15:57:35 -07:00
										 |  |  |     updateModel(dir: FormControlName, value: any): void; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare class FormGroupName extends AbstractFormGroupDirective implements OnInit, OnDestroy { | 
					
						
							|  |  |  |     name: string; | 
					
						
							|  |  |  |     constructor(parent: ControlContainer, validators: any[], asyncValidators: any[]); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
											  
											
												feat(forms): add modules for forms and deprecatedForms (#9859)
Closes #9732
BREAKING CHANGE:
We have removed the deprecated form directives from the built-in platform directive list, so apps are not required to package forms with their app. This also makes forms friendly to offline compilation.
Instead, we have exposed three modules:
OLD API:
- `DeprecatedFormsModule`
NEW API:
- `FormsModule`
- `ReactiveFormsModule`
If you provide one of these modules, the default forms directives and providers from that module will be available to you app-wide.  Note: You can provide both the `FormsModule` and the `ReactiveFormsModule` together if you like, but they are fully-functional separately.
**Before:**
```ts
import {disableDeprecatedForms, provideForms} from @angular/forms;
bootstrap(App, [
   disableDeprecatedForms(),
   provideForms()
]);
```
**After:**
```ts
import {DeprecatedFormsModule} from @angular/common;
bootstrap(App, {modules: [DeprecatedFormsModule] });
```
-OR-
```ts
import {FormsModule} from @angular/forms;
bootstrap(App, {modules: [FormsModule] });
```
-OR-
```ts
import {ReactiveFormsModule} from @angular/forms;
bootstrap(App, {modules: [ReactiveFormsModule] });
```
You can also choose not to provide any forms module and run your app without forms.
Or you can choose not to provide any forms module *and* provide form directives at will.  This will allow you to use the deprecatedForms API for some components and not others.
```
import {FORM_DIRECTIVES, FORM_PROVIDERS} from @angular/forms;
@Component({
   selector: some-comp,
   directives: [FORM_DIRECTIVES],
   providers: [FORM_PROVIDERS]
})
class SomeComp
```
											
										 
											2016-07-07 11:32:51 -07:00
										 |  |  | export declare class FormsModule { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-08-06 08:53:41 +02:00
										 |  |  | export declare class MaxLengthValidator implements Validator, OnChanges { | 
					
						
							|  |  |  |     maxlength: string; | 
					
						
							|  |  |  |     ngOnChanges(changes: SimpleChanges): void; | 
					
						
							| 
									
										
										
										
											2016-09-09 14:09:11 -07:00
										 |  |  |     registerOnValidatorChange(fn: () => void): void; | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  |     validate(c: AbstractControl): ValidationErrors | null; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-08-06 08:53:41 +02:00
										 |  |  | export declare class MinLengthValidator implements Validator, OnChanges { | 
					
						
							|  |  |  |     minlength: string; | 
					
						
							|  |  |  |     ngOnChanges(changes: SimpleChanges): void; | 
					
						
							| 
									
										
										
										
											2016-09-09 14:09:11 -07:00
										 |  |  |     registerOnValidatorChange(fn: () => void): void; | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  |     validate(c: AbstractControl): ValidationErrors | null; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2017-01-03 16:54:46 -08:00
										 |  |  | export declare const NG_ASYNC_VALIDATORS: InjectionToken<(Function | Validator)[]>; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2017-01-03 16:54:46 -08:00
										 |  |  | export declare const NG_VALIDATORS: InjectionToken<(Function | Validator)[]>; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2017-01-03 16:54:46 -08:00
										 |  |  | export declare const NG_VALUE_ACCESSOR: InjectionToken<ControlValueAccessor>; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare abstract class NgControl extends AbstractControlDirective { | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     readonly asyncValidator: AsyncValidatorFn | null; | 
					
						
							|  |  |  |     name: string | null; | 
					
						
							|  |  |  |     readonly validator: ValidatorFn | null; | 
					
						
							|  |  |  |     valueAccessor: ControlValueAccessor | null; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     abstract viewToModelUpdate(newValue: any): void; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-08-11 09:01:09 -07:00
										 |  |  | export declare class NgControlStatus extends AbstractControlStatus { | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     constructor(cd: NgControl); | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-08-11 09:01:09 -07:00
										 |  |  | export declare class NgControlStatusGroup extends AbstractControlStatus { | 
					
						
							|  |  |  |     constructor(cd: ControlContainer); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2017-08-08 14:37:29 -07:00
										 |  |  | export declare class NgForm extends ControlContainer implements Form, AfterViewInit { | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly control: FormGroup; | 
					
						
							|  |  |  |     readonly controls: { | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |         [key: string]: AbstractControl; | 
					
						
							|  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     form: FormGroup; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly formDirective: Form; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     ngSubmit: EventEmitter<{}>; | 
					
						
							| 
									
										
										
										
											2017-08-08 14:37:29 -07:00
										 |  |  |     options: { | 
					
						
							|  |  |  |         updateOn?: FormHooks; | 
					
						
							|  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly path: string[]; | 
					
						
							|  |  |  |     readonly submitted: boolean; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     constructor(validators: any[], asyncValidators: any[]); | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     addControl(dir: NgModel): void; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     addFormGroup(dir: NgModelGroup): void; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     getControl(dir: NgModel): FormControl; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     getFormGroup(dir: NgModelGroup): FormGroup; | 
					
						
							| 
									
										
										
										
											2017-08-08 14:37:29 -07:00
										 |  |  |     ngAfterViewInit(): void; | 
					
						
							| 
									
										
										
										
											2016-07-12 15:02:25 -07:00
										 |  |  |     onReset(): void; | 
					
						
							| 
									
										
										
										
											2016-10-11 23:49:36 +01:00
										 |  |  |     onSubmit($event: Event): boolean; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     removeControl(dir: NgModel): void; | 
					
						
							|  |  |  |     removeFormGroup(dir: NgModelGroup): void; | 
					
						
							| 
									
										
										
										
											2016-08-11 23:27:33 -07:00
										 |  |  |     resetForm(value?: any): void; | 
					
						
							| 
									
										
										
										
											2016-08-05 13:35:17 -07:00
										 |  |  |     setValue(value: { | 
					
						
							| 
									
										
										
										
											2016-07-08 13:04:25 -07:00
										 |  |  |         [key: string]: any; | 
					
						
							|  |  |  |     }): void; | 
					
						
							| 
									
										
										
										
											2016-08-05 13:35:17 -07:00
										 |  |  |     updateModel(dir: NgControl, value: any): void; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare class NgModel extends NgControl implements OnChanges, OnDestroy { | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     readonly asyncValidator: AsyncValidatorFn | null; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly control: FormControl; | 
					
						
							|  |  |  |     readonly formDirective: any; | 
					
						
							| 
									
										
										
										
											2016-08-25 14:56:31 -07:00
										 |  |  |     isDisabled: boolean; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     model: any; | 
					
						
							|  |  |  |     name: string; | 
					
						
							|  |  |  |     options: { | 
					
						
							|  |  |  |         name?: string; | 
					
						
							|  |  |  |         standalone?: boolean; | 
					
						
							| 
									
										
										
										
											2017-08-07 21:11:46 -07:00
										 |  |  |         updateOn?: FormHooks; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     }; | 
					
						
							| 
									
										
										
										
											2017-02-07 19:27:01 -08:00
										 |  |  |     readonly path: string[]; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     update: EventEmitter<{}>; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     readonly validator: ValidatorFn | null; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     viewModel: any; | 
					
						
							| 
									
										
										
										
											2017-02-21 03:26:51 +03:00
										 |  |  |     constructor(parent: ControlContainer, validators: Array<Validator | ValidatorFn>, asyncValidators: Array<AsyncValidator | AsyncValidatorFn>, valueAccessors: ControlValueAccessor[]); | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     ngOnChanges(changes: SimpleChanges): void; | 
					
						
							|  |  |  |     ngOnDestroy(): void; | 
					
						
							|  |  |  |     viewToModelUpdate(newValue: any): void; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare class NgModelGroup extends AbstractFormGroupDirective implements OnInit, OnDestroy { | 
					
						
							|  |  |  |     name: string; | 
					
						
							|  |  |  |     constructor(parent: ControlContainer, validators: any[], asyncValidators: any[]); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare class NgSelectOption implements OnDestroy { | 
					
						
							|  |  |  |     id: string; | 
					
						
							|  |  |  |     ngValue: any; | 
					
						
							|  |  |  |     value: any; | 
					
						
							| 
									
										
										
										
											2017-06-20 11:35:16 +02:00
										 |  |  |     constructor(_element: ElementRef, _renderer: Renderer2, _select: SelectControlValueAccessor); | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     ngOnDestroy(): void; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-08-06 08:53:41 +02:00
										 |  |  | export declare class PatternValidator implements Validator, OnChanges { | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  |     pattern: string | RegExp; | 
					
						
							| 
									
										
										
										
											2016-08-06 08:53:41 +02:00
										 |  |  |     ngOnChanges(changes: SimpleChanges): void; | 
					
						
							| 
									
										
										
										
											2016-09-09 14:09:11 -07:00
										 |  |  |     registerOnValidatorChange(fn: () => void): void; | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  |     validate(c: AbstractControl): ValidationErrors | null; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-19 10:41:20 -07:00
										 |  |  | /** @stable */ | 
					
						
							|  |  |  | export declare class RadioControlValueAccessor implements ControlValueAccessor, OnDestroy, OnInit { | 
					
						
							|  |  |  |     formControlName: string; | 
					
						
							|  |  |  |     name: string; | 
					
						
							|  |  |  |     onChange: () => void; | 
					
						
							|  |  |  |     onTouched: () => void; | 
					
						
							|  |  |  |     value: any; | 
					
						
							| 
									
										
										
										
											2017-06-20 11:35:16 +02:00
										 |  |  |     constructor(_renderer: Renderer2, _elementRef: ElementRef, _registry: RadioControlRegistry, _injector: Injector); | 
					
						
							| 
									
										
										
										
											2016-09-19 10:41:20 -07:00
										 |  |  |     fireUncheck(value: any): void; | 
					
						
							|  |  |  |     ngOnDestroy(): void; | 
					
						
							|  |  |  |     ngOnInit(): void; | 
					
						
							|  |  |  |     registerOnChange(fn: (_: any) => {}): void; | 
					
						
							|  |  |  |     registerOnTouched(fn: () => {}): void; | 
					
						
							|  |  |  |     setDisabledState(isDisabled: boolean): void; | 
					
						
							|  |  |  |     writeValue(value: any): void; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
											  
											
												feat(forms): add modules for forms and deprecatedForms (#9859)
Closes #9732
BREAKING CHANGE:
We have removed the deprecated form directives from the built-in platform directive list, so apps are not required to package forms with their app. This also makes forms friendly to offline compilation.
Instead, we have exposed three modules:
OLD API:
- `DeprecatedFormsModule`
NEW API:
- `FormsModule`
- `ReactiveFormsModule`
If you provide one of these modules, the default forms directives and providers from that module will be available to you app-wide.  Note: You can provide both the `FormsModule` and the `ReactiveFormsModule` together if you like, but they are fully-functional separately.
**Before:**
```ts
import {disableDeprecatedForms, provideForms} from @angular/forms;
bootstrap(App, [
   disableDeprecatedForms(),
   provideForms()
]);
```
**After:**
```ts
import {DeprecatedFormsModule} from @angular/common;
bootstrap(App, {modules: [DeprecatedFormsModule] });
```
-OR-
```ts
import {FormsModule} from @angular/forms;
bootstrap(App, {modules: [FormsModule] });
```
-OR-
```ts
import {ReactiveFormsModule} from @angular/forms;
bootstrap(App, {modules: [ReactiveFormsModule] });
```
You can also choose not to provide any forms module and run your app without forms.
Or you can choose not to provide any forms module *and* provide form directives at will.  This will allow you to use the deprecatedForms API for some components and not others.
```
import {FORM_DIRECTIVES, FORM_PROVIDERS} from @angular/forms;
@Component({
   selector: some-comp,
   directives: [FORM_DIRECTIVES],
   providers: [FORM_PROVIDERS]
})
class SomeComp
```
											
										 
											2016-07-07 11:32:51 -07:00
										 |  |  | export declare class ReactiveFormsModule { | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-08-06 08:53:41 +02:00
										 |  |  | export declare class RequiredValidator implements Validator { | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  |     required: boolean | string; | 
					
						
							| 
									
										
										
										
											2016-09-09 14:09:11 -07:00
										 |  |  |     registerOnValidatorChange(fn: () => void): void; | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  |     validate(c: AbstractControl): ValidationErrors | null; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare class SelectControlValueAccessor implements ControlValueAccessor { | 
					
						
							| 
									
										
										
										
											2016-12-10 00:10:40 +03:00
										 |  |  |     compareWith: (o1: any, o2: any) => boolean; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     onChange: (_: any) => void; | 
					
						
							|  |  |  |     onTouched: () => void; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     value: any; | 
					
						
							| 
									
										
										
										
											2017-06-20 11:35:16 +02:00
										 |  |  |     constructor(_renderer: Renderer2, _elementRef: ElementRef); | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  |     registerOnChange(fn: (value: any) => any): void; | 
					
						
							|  |  |  |     registerOnTouched(fn: () => any): void; | 
					
						
							| 
									
										
										
										
											2016-08-24 16:58:43 -07:00
										 |  |  |     setDisabledState(isDisabled: boolean): void; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     writeValue(value: any): void; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-30 18:04:00 -07:00
										 |  |  | export declare class SelectMultipleControlValueAccessor implements ControlValueAccessor { | 
					
						
							| 
									
										
										
										
											2016-12-10 00:10:40 +03:00
										 |  |  |     compareWith: (o1: any, o2: any) => boolean; | 
					
						
							| 
									
										
										
										
											2016-06-30 18:04:00 -07:00
										 |  |  |     onChange: (_: any) => void; | 
					
						
							|  |  |  |     onTouched: () => void; | 
					
						
							|  |  |  |     value: any; | 
					
						
							| 
									
										
										
										
											2017-06-20 11:35:16 +02:00
										 |  |  |     constructor(_renderer: Renderer2, _elementRef: ElementRef); | 
					
						
							| 
									
										
										
										
											2016-06-30 18:04:00 -07:00
										 |  |  |     registerOnChange(fn: (value: any) => any): void; | 
					
						
							|  |  |  |     registerOnTouched(fn: () => any): void; | 
					
						
							| 
									
										
										
										
											2016-08-24 16:58:43 -07:00
										 |  |  |     setDisabledState(isDisabled: boolean): void; | 
					
						
							| 
									
										
										
										
											2016-06-30 18:04:00 -07:00
										 |  |  |     writeValue(value: any): void; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  | /** @experimental */ | 
					
						
							|  |  |  | export declare type ValidationErrors = { | 
					
						
							|  |  |  |     [key: string]: any; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export interface Validator { | 
					
						
							| 
									
										
										
										
											2016-09-09 14:09:11 -07:00
										 |  |  |     registerOnValidatorChange?(fn: () => void): void; | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  |     validate(c: AbstractControl): ValidationErrors | null; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-24 18:24:11 -07:00
										 |  |  | export interface ValidatorFn { | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  |     (c: AbstractControl): ValidationErrors | null; | 
					
						
							| 
									
										
										
										
											2016-06-24 18:24:11 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:44:39 -07:00
										 |  |  | /** @stable */ | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | export declare class Validators { | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     static compose(validators: (ValidatorFn | null | undefined)[]): ValidatorFn | null; | 
					
						
							| 
									
										
										
										
											2017-04-28 18:48:15 +02:00
										 |  |  |     static compose(validators: null): null; | 
					
						
							| 
									
										
										
										
											2017-04-17 11:13:30 -07:00
										 |  |  |     static composeAsync(validators: (AsyncValidatorFn | null)[]): AsyncValidatorFn | null; | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  |     static email(control: AbstractControl): ValidationErrors | null; | 
					
						
							| 
									
										
										
										
											2017-04-06 09:41:10 -06:00
										 |  |  |     static max(max: number): ValidatorFn; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     static maxLength(maxLength: number): ValidatorFn; | 
					
						
							| 
									
										
										
										
											2017-04-06 09:41:10 -06:00
										 |  |  |     static min(min: number): ValidatorFn; | 
					
						
							| 
									
										
										
										
											2016-06-23 18:19:32 -07:00
										 |  |  |     static minLength(minLength: number): ValidatorFn; | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  |     static nullValidator(c: AbstractControl): ValidationErrors | null; | 
					
						
							| 
									
										
										
										
											2016-10-19 19:37:54 +03:00
										 |  |  |     static pattern(pattern: string | RegExp): ValidatorFn; | 
					
						
							| 
									
										
										
										
											2017-02-23 20:53:29 +03:00
										 |  |  |     static required(control: AbstractControl): ValidationErrors | null; | 
					
						
							|  |  |  |     static requiredTrue(control: AbstractControl): ValidationErrors | null; | 
					
						
							| 
									
										
										
										
											2016-06-22 14:56:10 -07:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2016-11-30 13:52:08 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** @stable */ | 
					
						
							|  |  |  | export declare const VERSION: Version; |