import { EventEmitter } from 'angular2/src/facade/async'; import { NgControl } from './ng_control'; import { Form } from './form_interface'; import { NgControlGroup } from './ng_control_group'; import { ControlContainer } from './control_container'; import { AbstractControl, ControlGroup, Control } from '../model'; /** * If `NgForm` is bound in a component, `
` elements in that component will be * upgraded to use the Angular form system. * * ### Typical Use * * Include `FORM_DIRECTIVES` in the `directives` section of a {@link View} annotation * to use `NgForm` and its associated controls. * * ### Structure * * An Angular form is a collection of `Control`s in some hierarchy. * `Control`s can be at the top level or can be organized in `ControlGroup`s * or `ControlArray`s. This hierarchy is reflected in the form's `value`, a * JSON object that mirrors the form structure. * * ### Submission * * The `ngSubmit` event signals when the user triggers a form submission. * * ### Example ([live demo](http://plnkr.co/edit/ltdgYj4P0iY64AR71EpL?p=preview)) * * ```typescript * @Component({ * selector: 'my-app', * template: ` *
*

Submit the form to see the data object Angular builds

*

NgForm demo

* *

Control group: credentials

*
*

Login:

*

Password:

*
*

Control group: person

*
*

First name:

*

Last name:

*
* *

Form data submitted:

* *
{{data}}
*
* `, * directives: [CORE_DIRECTIVES, FORM_DIRECTIVES] * }) * export class App { * constructor() {} * * data: string; * * onSubmit(data) { * this.data = JSON.stringify(data, null, 2); * } * } * ``` */ export declare class NgForm extends ControlContainer implements Form { form: ControlGroup; ngSubmit: EventEmitter<{}>; constructor(validators: any[], asyncValidators: any[]); formDirective: Form; control: ControlGroup; path: string[]; controls: { [key: string]: AbstractControl; }; addControl(dir: NgControl): void; getControl(dir: NgControl): Control; removeControl(dir: NgControl): void; addControlGroup(dir: NgControlGroup): void; removeControlGroup(dir: NgControlGroup): void; getControlGroup(dir: NgControlGroup): ControlGroup; updateModel(dir: NgControl, value: any): void; onSubmit(): boolean; }