File

src/ng-xform/form-group/form-group.component.ts

Description

This component builds a form with input components from fields list.

:fields: List of configurations to build fields. :editing: Flag to control components state

Metadata

selector ng-xform-form-group
templateUrl ./form-group.component.html

Index

Inputs

Inputs

editing

Type: boolean

fields

Type: DynamicField[]

form

Type: FormGroup

isHorizontal

Type: boolean

labelWidth

Type: number

import { FormGroup } from '@angular/forms';
import { Component, Input } from '@angular/core';

import { DynamicField } from '../fields/dynamic-field';

/**
 * This component builds a form with input components from fields list.
 *
 * :fields: List of configurations to build fields.
 * :editing: Flag to control components state
 */
@Component({
  selector: 'ng-xform-form-group',
  templateUrl: './form-group.component.html',
  styles: []
})
export class FormGroupComponent {
  @Input() fields: DynamicField[];
  @Input() form: FormGroup;
  @Input() editing: boolean;
  @Input() isHorizontal: boolean;
  @Input() labelWidth: number;
}
<div [formGroup]='form'>
  <div *ngFor="let field of fields">


    <div [ngSwitch]="field.controlType">

      <ng-template [ngSwitchCase]="'GROUP'">
        <hr *ngIf='field.label'>
        <h4 *ngIf='field.label'>
          {{field.label}}
        </h4>
        <div [formGroupName]="field.key">
          <ng-xform-form-group [fields]='field.fields' [labelWidth]="labelWidth" [isHorizontal]="isHorizontal" [form]='form.get(field.key)' [editing]='editing'>
          </ng-xform-form-group>
        </div>
      </ng-template>

      <ng-xform-measure-field  *ngSwitchCase="'MEASURE'" [labelWidth]="labelWidth" [isHorizontal]="isHorizontal" [field]="field" [form]="form" [formControlName]="field.key" [editing]="editing !== false">
      </ng-xform-measure-field>

      <ng-xform-number-field *ngSwitchCase="'NUMBER'" [labelWidth]="labelWidth" [isHorizontal]="isHorizontal" [field]="field" [form]="form" [editing]="editing !== false">
      </ng-xform-number-field>

      <ng-xform-editable-label *ngSwitchCase="'TEXT'" [labelWidth]="labelWidth" [isHorizontal]="isHorizontal" [field]="field" [form]="form" [editing]="editing !== false">
      </ng-xform-editable-label>

      <ng-xform-multiline-field *ngSwitchCase="'MULTILINE'" [labelWidth]="labelWidth" [isHorizontal]="isHorizontal" [field]="field" [form]="form" [editing]="editing !== false">
      </ng-xform-multiline-field>

      <ng-xform-checkbox-field *ngSwitchCase="'CHECKBOX'" [labelWidth]="labelWidth" [isHorizontal]="isHorizontal" [field]="field" [form]="form" [editing]="editing !== false">
      </ng-xform-checkbox-field>

      <ng-xform-custom-field *ngSwitchCase="'CUSTOM'" [labelWidth]="labelWidth" [isHorizontal]="isHorizontal" [field]="field" [form]="form" [editing]="editing !== false">
      </ng-xform-custom-field>

      <ng-xform-radiogroup-field *ngSwitchCase="'RADIOGROUP'" [labelWidth]="labelWidth" [isHorizontal]="isHorizontal" [field]="field" [form]="form" [editing]="editing !== false">
      </ng-xform-radiogroup-field>

      <ng-xform-select-field *ngSwitchCase="'SELECT'" [labelWidth]="labelWidth" [isHorizontal]="isHorizontal" [field]="field" [form]="form" [formControlName]="field.key" [editing]="editing !== false">
      </ng-xform-select-field>

      <ng-xform-date-field *ngSwitchCase="'DATE'" [labelWidth]="labelWidth" [isHorizontal]="isHorizontal" [field]="field" [form]="form" [formControlName]="field.key" [editing]="editing !== false">
      </ng-xform-date-field>

      <ng-xform-date-range-field *ngSwitchCase="'DATERANGE'" [labelWidth]="labelWidth" [isHorizontal]="isHorizontal" [field]="field" [form]="form" [formControlName]="field.key" [editing]="editing !== false">
      </ng-xform-date-range-field>

      <pre *ngSwitchDefault>{{ field | json}}</pre>
    </div>
  </div>
</div>
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""