File

src/app/shared/widgets/dynamic-form/dynamic-form.validator.ts

Implements

AsyncValidator

Metadata

providers { : , : , : true, }
selector [dynamicFormValidator]

Index

Widget inputs
Widget outputs
Methods
Inputs

Constructor

constructor(validationService: ValidationService)
Parameters :
Name Type Optional
validationService ValidationService no

Inputs

dynamicFormValidator

Type: DynamicFormField

Methods

validate
validate(control: AbstractControl)
Parameters :
Name Type Optional
control AbstractControl no
Returns : Observable<ValidationErrors | null>
import {
  AbstractControl,
  AsyncValidator,
  NG_ASYNC_VALIDATORS,
  ValidationErrors,
} from "@angular/forms";
import { Directive, Input } from "@angular/core";
import { DynamicFormField } from "./dynamic-form-component/dynamic-form-fields.component";
import { ValidationService } from "../../components/validation/validation.service";
import { Observable, of } from "rxjs";
import { tap } from "rxjs/operators";

@Directive({
  selector: "[dynamicFormValidator]",
  providers: [
    {
      provide: NG_ASYNC_VALIDATORS,
      useExisting: DynamicFormValidator,
      multi: true,
    },
  ],
})
export class DynamicFormValidator implements AsyncValidator {
  @Input("dynamicFormValidator") field: DynamicFormField;

  constructor(private validationService: ValidationService) {}

  validate(control: AbstractControl): Observable<ValidationErrors | null> {
    if (!this.field.validations) {
      return of(null);
    }

    return this.validationService
      .validateField(this.field, control.value)
      .pipe(tap((errors) => (this.field.errors = errors as any)));
  }
}

results matching ""

    No results matching ""