/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ import {FormControl} from '../model/form_control'; import {FormGroup} from '../model/form_group'; import {AbstractFormGroupDirective} from './abstract_form_group_directive'; import {NgControl} from './ng_control'; /** * @description * An interface implemented by `FormGroupDirective` and `NgForm` directives. * * Only used by the `ReactiveFormsModule` and `FormsModule`. * * @publicApi */ export interface Form { /** * @description * Add a control to this form. * * @param dir The control directive to add to the form. */ addControl(dir: NgControl): void; /** * @description * Remove a control from this form. * * @param dir: The control directive to remove from the form. */ removeControl(dir: NgControl): void; /** * @description * The control directive from which to get the `FormControl`. * * @param dir: The control directive. */ getControl(dir: NgControl): FormControl; /** * @description * Add a group of controls to this form. * * @param dir: The control group directive to add. */ addFormGroup(dir: AbstractFormGroupDirective): void; /** * @description * Remove a group of controls to this form. * * @param dir: The control group directive to remove. */ removeFormGroup(dir: AbstractFormGroupDirective): void; /** * @description * The `FormGroup` associated with a particular `AbstractFormGroupDirective`. * * @param dir: The form group directive from which to get the `FormGroup`. */ getFormGroup(dir: AbstractFormGroupDirective): FormGroup; /** * @description * Update the model for a particular control with a new value. * * @param dir: The control directive to update. * @param value: The new value for the control. */ updateModel(dir: NgControl, value: any): void; }