All files / lib/dynamic-form-control dynamic-form-control.component.ts

100% Statements 12/12
100% Branches 3/3
100% Functions 5/5
100% Lines 12/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56                          1x                             6x 6x   6x       6x       11x 1x         7x 7x 7x       1x 1x      
import { Component, DoCheck, OnInit, ViewChild, ViewContainerRef } from '@angular/core';
import { DynamicFormInput } from '../dynamic-form-input/dynamic-form-input';
import { DynamicFormValidationService } from '../dynamic-form-validation/dynamic-form-validation.service';
import { DynamicFormComponentFactory } from '../dynamic-form/dynamic-form-component.factory';
import { DynamicFormControl } from './dynamic-form-control';
import { DynamicFormControlBase } from './dynamic-form-control-base';
import { DynamicFormControlDefinition } from './dynamic-form-control-definition';
import { DynamicFormControlTemplate } from './dynamic-form-control-template';
 
@Component({
  selector: 'dynamic-form-control',
  templateUrl: './dynamic-form-control.component.html',
})
export class DynamicFormControlComponent<
  Value = any,
  Input extends DynamicFormInput<Value> = DynamicFormInput<Value>,
  Template extends DynamicFormControlTemplate<Value, Input> = DynamicFormControlTemplate<Value, Input>,
  Definition extends DynamicFormControlDefinition<Value, Input, Template> = DynamicFormControlDefinition<Value, Input, Template>,
  Control extends DynamicFormControl<Value, Input, Template, Definition> = DynamicFormControl<Value, Input, Template, Definition>
> extends DynamicFormControlBase<Value, Input, Template, Definition, Control> implements OnInit, DoCheck {
 
  private _initialized: boolean;
  private _inputType: string;
 
  @ViewChild('container', { read: ViewContainerRef, static: true })
  container: ViewContainerRef;
 
  constructor(
    protected componentFactory: DynamicFormComponentFactory,
    protected override validationService: DynamicFormValidationService,
  ) {
    super(validationService);
  }
 
  ngOnInit(): void {
    this.initContainer();
  }
 
  ngDoCheck(): void {
    if (this._initialized && this._inputType !== this.inputType) {
      this.updateContainer();
    }
  }
 
  private initContainer(): void {
    this._initialized = true;
    this._inputType = this.inputType;
    this.componentFactory.createInputComponent(this.container, this.field);
  }
 
  private updateContainer(): void {
    this.container.clear();
    this.initContainer();
  }
}