text: import { Directive, Host, Inject, Optional, Self, SkipSelf, forwardRef } from '@angular/core';
  import { NG_ASYNC_VALIDATORS, NG_VALIDATORS } from '../validators';
  import { ControlContainer } from './control_container';
  import { composeAsyncValidators, composeValidators, controlPath } from './shared';
  export const controlGroupProvider = 
  /*@ts2dart_const*/ /* @ts2dart_Provider */ {
      provide: ControlContainer,
      useExisting: forwardRef(() => NgControlGroup)
  };
  export class NgControlGroup extends ControlContainer {
      constructor(parent, _validators, _asyncValidators) {
          super();
          this._validators = _validators;
          this._asyncValidators = _asyncValidators;
          this._parent = parent;
      }
      ngOnInit() { this.formDirective.addControlGroup(this); }
      ngOnDestroy() { this.formDirective.removeControlGroup(this); }
      /**
       * Get the {@link ControlGroup} backing this binding.
       */
      get control() { return this.formDirective.getControlGroup(this); }
      /**
       * Get the path to this control group.
       */
      get path() { return controlPath(this.name, this._parent); }
      /**
       * Get the {@link Form} to which this group belongs.
       */
      get formDirective() { return this._parent.formDirective; }
      get validator() { return composeValidators(this._validators); }
      get asyncValidator() { return composeAsyncValidators(this._asyncValidators); }
  }
  /** @nocollapse */
  NgControlGroup.decorators = [
      { type: Directive, args: [{
                  selector: '[ngControlGroup]',
                  providers: [controlGroupProvider],
                  inputs: ['name: ngControlGroup'],
                  exportAs: 'ngForm'
              },] },
  ];
  /** @nocollapse */
  NgControlGroup.ctorParameters = [
      { type: ControlContainer, decorators: [{ type: Host }, { type: SkipSelf },] },
      { type: Array, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NG_VALIDATORS,] },] },
      { type: Array, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NG_ASYNC_VALIDATORS,] },] },
  ];
  //# sourceMappingURL=ng_control_group.js.map