FormGroupDirective

directive

npm Package @angular/forms
Module import { FormGroupDirective } from '@angular/forms';
Source forms/src/directives/reactive_directives/form_group_directive.ts

Binds an existing FormGroup to a DOM element.

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