On this page
FormControlDirective
directive
npm Package | @angular/forms |
---|---|
Module | import { FormControlDirective } from '@angular/forms'; |
Source | forms/src/directives/reactive_directives/form_control_directive.ts |
Overview
@Directive({ selector: '[formControl]', providers: [formControlBinding], exportAs: 'ngForm' })
class FormControlDirective extends NgControl implements OnChanges {
viewModel: any
form: FormControl
model: any
update: new EventEmitter()
set isDisabled: boolean
ngOnChanges(changes: SimpleChanges): void
get path: string[]
get validator: ValidatorFn|null
get asyncValidator: AsyncValidatorFn|null
get control: FormControl
viewToModelUpdate(newValue: any): void
// inherited from forms/NgControl
name: string|null
valueAccessor: ControlValueAccessor|null
get validator: ValidatorFn|null
get asyncValidator: AsyncValidatorFn|null
viewToModelUpdate(newValue: any): void
// inherited from forms/AbstractControlDirective
get control: AbstractControl|null
get value: any
get valid: boolean|null
get invalid: boolean|null
get pending: boolean|null
get disabled: boolean|null
get enabled: boolean|null
get errors: ValidationErrors|null
get pristine: boolean|null
get dirty: boolean|null
get touched: boolean|null
get untouched: boolean|null
get statusChanges: Observable<any>|null
get valueChanges: Observable<any>|null
get path: string[]|null
reset(value: any = undefined): void
hasError(errorCode: string, path?: string[]): boolean
getError(errorCode: string, path?: string[]): any
}
How To Use
Use this directive if you'd like to create and manage a FormControl
instance directly. Simply create a FormControl
, save it to your component class, and pass it into the FormControlDirective
.
This directive is designed to be used as a standalone control. Unlike FormControlName
, it does not require that your FormControl
instance be part of any parent FormGroup
, and it won't be registered to any FormGroupDirective
that exists above it.
Get the value: the value
property is always synced and available on the FormControl
instance. See a full list of available properties in AbstractControl
.
Set the value: You can pass in an initial value when instantiating the FormControl
, or you can set it programmatically later using setValue or patchValue.
Listen to value: If you want to listen to changes in the value of the control, you can subscribe to the valueChanges event. You can also listen to statusChanges to be notified when the validation status is re-calculated.
Example
import {Component} from '@angular/core';
import {FormControl, Validators} from '@angular/forms';
@Component({
selector: 'example-app',
template: `
<input [formControl]="control">
<p>Value: {{ control.value }}</p>
<p>Validation status: {{ control.status }}</p>
<button (click)="setValue()">Set value</button>
`,
})
export class SimpleFormControl {
control: FormControl = new FormControl('value', Validators.minLength(2));
setValue() { this.control.setValue('new value'); }
}
npm package:
@angular/forms
NgModule:
ReactiveFormsModule
Selectors
[formControl]
Inputs
formControl
bound to FormControlDirective.form
ngModel
bound to FormControlDirective.model
disabled
bound to FormControlDirective.isDisabled
Outputs
ngModelChange
bound to FormControlDirective.update
Exported as
ngForm
Constructor
constructor(validators: Array<Validator|ValidatorFn>, asyncValidators: Array<AsyncValidator|AsyncValidatorFn>, valueAccessors: ControlValueAccessor[])
Members
viewModel: any
form: FormControl
model: any
update: new EventEmitter()
set isDisabled: boolean
ngOnChanges(changes: SimpleChanges): void
get path: string[]
get validator: ValidatorFn|null
get asyncValidator: AsyncValidatorFn|null
get control: FormControl
viewToModelUpdate(newValue: any): void
© 2010–2017 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://v4.angular.io/api/forms/FormControlDirective