FormGroupDirective
directive
npm Package | @angular/forms |
---|---|
Module | import { FormGroupDirective } from '@angular/forms'; |
Source | forms/src/directives/reactive_directives/form_group_directive.ts |
Overview
@Directive({ selector: '[formGroup]', providers: [formDirectiveProvider], host: { '(submit)': 'onSubmit($event)', '(reset)': 'onReset()' }, exportAs: 'ngForm' }) class FormGroupDirective extends ControlContainer implements Form, OnChanges { directives: FormControlName[] form: FormGroup ngSubmit: new EventEmitter() ngOnChanges(changes: SimpleChanges): void get submitted: boolean get formDirective: Form get control: FormGroup get path: string[] addControl(dir: FormControlName): FormControl getControl(dir: FormControlName): FormControl removeControl(dir: FormControlName): void addFormGroup(dir: FormGroupName): void removeFormGroup(dir: FormGroupName): void getFormGroup(dir: FormGroupName): FormGroup addFormArray(dir: FormArrayName): void removeFormArray(dir: FormArrayName): void getFormArray(dir: FormArrayName): FormArray updateModel(dir: FormControlName, value: any): void onSubmit($event: Event): boolean onReset(): void resetForm(value: any = undefined): void // inherited from forms/ControlContainer name: string get formDirective: Form|null get path: string[]|null // 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
This directive accepts an existing FormGroup
instance. It will then use this FormGroup
instance to match any child FormControl
, FormGroup
, and FormArray
instances to child FormControlName
, FormGroupName
, and FormArrayName
directives.
Set value: You can set the form's initial value when instantiating the FormGroup
, or you can set it programmatically later using the FormGroup
's setValue or patchValue methods.
Listen to value: If you want to listen to changes in the value of the form, you can subscribe to the FormGroup
's valueChanges event. You can also listen to its statusChanges event to be notified when the validation status is re-calculated.
Furthermore, you can listen to the directive's ngSubmit
event to be notified when the user has triggered a form submission. The ngSubmit
event will be emitted with the original form submission event.
Example
In this example, we create form controls for first name and last name.
import {Component} from '@angular/core'; import {FormControl, FormGroup, Validators} from '@angular/forms'; @Component({ selector: 'example-app', template: ` <form [formGroup]="form" (ngSubmit)="onSubmit()"> <div *ngIf="first.invalid"> Name is too short. </div> <input formControlName="first" placeholder="First name"> <input formControlName="last" placeholder="Last name"> <button type="submit">Submit</button> </form> <button (click)="setValue()">Set preset value</button> `, }) export class SimpleFormGroup { form = new FormGroup({ first: new FormControl('Nancy', Validators.minLength(2)), last: new FormControl('Drew'), }); get first(): any { return this.form.get('first'); } onSubmit(): void { console.log(this.form.value); // {first: 'Nancy', last: 'Drew'} } setValue() { this.form.setValue({first: 'Carson', last: 'Drew'}); } }
npm package: @angular/forms
NgModule: ReactiveFormsModule
Selectors
[formGroup]
Inputs
formGroup
bound to FormGroupDirective.form
Outputs
ngSubmit
bound to FormGroupDirective.ngSubmit
Exported as
ngForm
Constructor
constructor(_validators: any[], _asyncValidators: any[])
Members
directives: FormControlName[]
form: FormGroup
ngSubmit: new EventEmitter()
ngOnChanges(changes: SimpleChanges): void
get submitted: boolean
get formDirective: Form
get control: FormGroup
get path: string[]
addControl(dir: FormControlName): FormControl
getControl(dir: FormControlName): FormControl
removeControl(dir: FormControlName): void
addFormGroup(dir: FormGroupName): void
removeFormGroup(dir: FormGroupName): void
getFormGroup(dir: FormGroupName): FormGroup
addFormArray(dir: FormArrayName): void
removeFormArray(dir: FormArrayName): void
getFormArray(dir: FormArrayName): FormArray
updateModel(dir: FormControlName, value: any): void
onSubmit($event: Event): boolean
onReset(): void
resetForm(value: any = undefined): void
© 2010–2017 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://v4.angular.io/api/forms/FormGroupDirective