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 ```
This commit is contained in:
4
tools/public_api_guard/common/index.d.ts
vendored
4
tools/public_api_guard/common/index.d.ts
vendored
@ -162,6 +162,10 @@ export declare class DefaultValueAccessor implements ControlValueAccessor {
|
||||
writeValue(value: any): void;
|
||||
}
|
||||
|
||||
/** @deprecated */
|
||||
export declare class DeprecatedFormsModule {
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export interface Form {
|
||||
addControl(dir: NgControl): void;
|
||||
|
17
tools/public_api_guard/forms/index.d.ts
vendored
17
tools/public_api_guard/forms/index.d.ts
vendored
@ -101,9 +101,6 @@ export declare class DefaultValueAccessor implements ControlValueAccessor {
|
||||
writeValue(value: any): void;
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare function disableDeprecatedForms(): any[];
|
||||
|
||||
/** @experimental */
|
||||
export interface Form {
|
||||
addControl(dir: NgControl): void;
|
||||
@ -116,7 +113,7 @@ export interface Form {
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare const FORM_DIRECTIVES: Type[];
|
||||
export declare const FORM_DIRECTIVES: Type[][];
|
||||
|
||||
/** @experimental */
|
||||
export declare const FORM_PROVIDERS: Type[];
|
||||
@ -246,6 +243,10 @@ export declare class FormGroupName extends AbstractFormGroupDirective implements
|
||||
constructor(parent: ControlContainer, validators: any[], asyncValidators: any[]);
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare class FormsModule {
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare class MaxLengthValidator implements Validator {
|
||||
constructor(maxLength: string);
|
||||
@ -358,10 +359,14 @@ export declare class PatternValidator implements Validator {
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare function provideForms(): any[];
|
||||
export declare const REACTIVE_FORM_DIRECTIVES: Type[][];
|
||||
|
||||
/** @experimental */
|
||||
export declare const REACTIVE_FORM_DIRECTIVES: Type[];
|
||||
export declare const REACTIVE_FORM_PROVIDERS: Type[];
|
||||
|
||||
/** @experimental */
|
||||
export declare class ReactiveFormsModule {
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare class RequiredValidator {
|
||||
|
Reference in New Issue
Block a user