From db3b0691777e65152e729d5025ad9e9398d9c0a6 Mon Sep 17 00:00:00 2001 From: jojohoch <joachim.hoch@iqb.hu-berlin.de> Date: Fri, 1 Oct 2021 09:36:43 +0200 Subject: [PATCH] Use default validator in `FormElementComponent` Overridden by some child elements (TextField, CheckBox) --- .../compound-components/correction.component.ts | 9 --------- .../common/element-components/dropdown.component.ts | 9 --------- .../radio-button-group.component.ts | 9 --------- .../common/element-components/text-area.component.ts | 9 --------- projects/common/form-element-component.directive.ts | 11 +++++++++-- 5 files changed, 9 insertions(+), 38 deletions(-) diff --git a/projects/common/element-components/compound-components/correction.component.ts b/projects/common/element-components/compound-components/correction.component.ts index 459f5b025..743d76323 100644 --- a/projects/common/element-components/compound-components/correction.component.ts +++ b/projects/common/element-components/compound-components/correction.component.ts @@ -1,5 +1,4 @@ import { Component } from '@angular/core'; -import { ValidatorFn, Validators } from '@angular/forms'; import { CompoundElementCorrection } from '../../unit'; import { FormElementComponent } from '../../form-element-component.directive'; @@ -33,12 +32,4 @@ import { FormElementComponent } from '../../form-element-component.directive'; }) export class CorrectionComponent extends FormElementComponent { elementModel!: CompoundElementCorrection; - - get validators(): ValidatorFn[] { - const validators: ValidatorFn[] = []; - if (this.elementModel.required) { - validators.push(Validators.required); - } - return validators; - } } diff --git a/projects/common/element-components/dropdown.component.ts b/projects/common/element-components/dropdown.component.ts index 50a0cfecb..626e98205 100644 --- a/projects/common/element-components/dropdown.component.ts +++ b/projects/common/element-components/dropdown.component.ts @@ -1,5 +1,4 @@ import { Component } from '@angular/core'; -import { ValidatorFn, Validators } from '@angular/forms'; import { DropdownElement } from '../unit'; import { FormElementComponent } from '../form-element-component.directive'; @@ -32,12 +31,4 @@ import { FormElementComponent } from '../form-element-component.directive'; }) export class DropdownComponent extends FormElementComponent { elementModel!: DropdownElement; - - get validators(): ValidatorFn[] { - const validators: ValidatorFn[] = []; - if (this.elementModel.required) { - validators.push(Validators.required); - } - return validators; - } } diff --git a/projects/common/element-components/radio-button-group.component.ts b/projects/common/element-components/radio-button-group.component.ts index 01341c0d6..ca91b333c 100644 --- a/projects/common/element-components/radio-button-group.component.ts +++ b/projects/common/element-components/radio-button-group.component.ts @@ -1,5 +1,4 @@ import { Component } from '@angular/core'; -import { ValidatorFn, Validators } from '@angular/forms'; import { RadioButtonGroupElement } from '../unit'; import { FormElementComponent } from '../form-element-component.directive'; @@ -34,12 +33,4 @@ import { FormElementComponent } from '../form-element-component.directive'; }) export class RadioButtonGroupComponent extends FormElementComponent { elementModel!: RadioButtonGroupElement; - - get validators(): ValidatorFn[] { - const validators: ValidatorFn[] = []; - if (this.elementModel.required) { - validators.push(Validators.required); - } - return validators; - } } diff --git a/projects/common/element-components/text-area.component.ts b/projects/common/element-components/text-area.component.ts index f2360c6b3..7dd9ad5fc 100644 --- a/projects/common/element-components/text-area.component.ts +++ b/projects/common/element-components/text-area.component.ts @@ -1,5 +1,4 @@ import { Component, Output, EventEmitter } from '@angular/core'; -import { ValidatorFn, Validators } from '@angular/forms'; import { TextAreaElement } from '../unit'; import { FormElementComponent } from '../form-element-component.directive'; @@ -33,12 +32,4 @@ export class TextAreaComponent extends FormElementComponent { @Output() onFocus = new EventEmitter<HTMLElement>(); @Output() onBlur = new EventEmitter<HTMLElement>(); elementModel!: TextAreaElement; - - get validators(): ValidatorFn[] { - const validators: ValidatorFn[] = []; - if (this.elementModel.required) { - validators.push(Validators.required); - } - return validators; - } } diff --git a/projects/common/form-element-component.directive.ts b/projects/common/form-element-component.directive.ts index f3933d831..d6581bd7b 100644 --- a/projects/common/form-element-component.directive.ts +++ b/projects/common/form-element-component.directive.ts @@ -2,7 +2,7 @@ import { Directive, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core'; import { - FormControl, FormGroup, ValidatorFn + FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms'; import { Subject } from 'rxjs'; import { pairwise, startWith, takeUntil } from 'rxjs/operators'; @@ -17,7 +17,6 @@ export abstract class FormElementComponent extends ElementComponent implements O parentForm!: FormGroup; defaultValue!: string | number | boolean | undefined; elementFormControl!: FormControl; - abstract validators: ValidatorFn[]; private ngUnsubscribe = new Subject<void>(); @@ -51,6 +50,14 @@ export abstract class FormElementComponent extends ElementComponent implements O }); } + get validators(): ValidatorFn[] { + const validators: ValidatorFn[] = []; + if (this.elementModel.required) { + validators.push(Validators.required); + } + return validators; + } + private get formControl(): FormControl { // workaround for editor return (this.parentForm) ? -- GitLab