import { FormGroup } from '@angular/forms'; import { plainToInstance } from 'class-transformer'; import { validate } from 'class-validator'; export async function validateObjectForForm({ classDto, form, ignoreFields = [], object }: { classDto: new () => T; form: FormGroup; ignoreFields?: string[]; object: T; }): Promise { const objectInstance = plainToInstance(classDto, object); const errors = await validate(objectInstance as object); const nonIgnoredErrors = errors.filter(({ property }) => { return !ignoreFields.includes(property); }); if (nonIgnoredErrors.length === 0) { return Promise.resolve(); } for (const { constraints, property } of nonIgnoredErrors) { const formControl = form.get(property); if (formControl) { formControl.setErrors({ validationError: Object.values(constraints)[0] }); } const formControlInCustomCurrency = form.get(`${property}InCustomCurrency`); if (formControlInCustomCurrency) { formControlInCustomCurrency.setErrors({ validationError: Object.values(constraints)[0] }); } } return Promise.reject(nonIgnoredErrors); }