/** * @license * Copyright Google Inc. 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 { EventEmitter, OnChanges, OnDestroy, SimpleChanges } from '@angular/core'; import { FormControl } from '../model'; import { ControlContainer } from './control_container'; import { ControlValueAccessor } from './control_value_accessor'; import { NgControl } from './ng_control'; import { AsyncValidator, AsyncValidatorFn, Validator, ValidatorFn } from './validators'; export declare const formControlBinding: any; /** * @whatItDoes Creates a {@link FormControl} instance from a domain model and binds it * to a form control element. * * The {@link FormControl} instance will track the value, user interaction, and * validation status of the control and keep the view synced with the model. If used * within a parent form, the directive will also register itself with the form as a child * control. * * @howToUse * * This directive can be used by itself or as part of a larger form. All you need is the * `ngModel` selector to activate it. * * It accepts a domain model as an optional {@link Input}. If you have a one-way binding * to `ngModel` with `[]` syntax, changing the value of the domain model in the component * class will set the value in the view. If you have a two-way binding with `[()]` syntax * (also known as 'banana-box syntax'), the value in the UI will always be synced back to * the domain model in your class as well. * * If you wish to inspect the properties of the associated {@link FormControl} (like * validity state), you can also export the directive into a local template variable using * `ngModel` as the key (ex: `#myVar="ngModel"`). You can then access the control using the * directive's `control` property, but most properties you'll need (like `valid` and `dirty`) * will fall through to the control anyway, so you can access them directly. You can see a * full list of properties directly available in {@link AbstractControlDirective}. * * The following is an example of a simple standalone control using `ngModel`: * * {@example forms/ts/simpleNgModel/simple_ng_model_example.ts region='Component'} * * When using the `ngModel` within `