mirror of https://github.com/ghostfolio/ghostfolio
committed by
Thomas Kaul
6 changed files with 47 additions and 152 deletions
@ -0,0 +1,25 @@ |
|||
import { FormGroup } from '@angular/forms'; |
|||
import { plainToInstance } from 'class-transformer'; |
|||
import { validate } from 'class-validator'; |
|||
|
|||
export async function validateObjectForForm<T>( |
|||
object: T, |
|||
classDto: { new (): T }, |
|||
form: FormGroup |
|||
): Promise<void> { |
|||
const objectInstance = plainToInstance(classDto, object); |
|||
const errors = await validate(objectInstance as object); |
|||
|
|||
if (errors.length === 0) return Promise.resolve(); |
|||
|
|||
for (const error of errors) { |
|||
const formControl = form.get(error.property); |
|||
if (formControl) { |
|||
formControl.setErrors({ |
|||
validationError: Object.values(error.constraints)[0] |
|||
}); |
|||
} |
|||
} |
|||
|
|||
return Promise.reject(errors); |
|||
} |
@ -1,27 +0,0 @@ |
|||
import { FormGroup } from '@angular/forms'; |
|||
import { plainToInstance } from 'class-transformer'; |
|||
import { validate } from 'class-validator'; |
|||
|
|||
export function validateObjectForForm<T>( |
|||
obj: T, |
|||
ctor: { new (): T }, |
|||
form: FormGroup, |
|||
onSuccess: () => void |
|||
): void { |
|||
const objInstance = plainToInstance(ctor, obj); |
|||
|
|||
validate(objInstance as object).then((errors) => { |
|||
if (errors.length === 0) { |
|||
onSuccess(); |
|||
} else { |
|||
errors.forEach((error) => { |
|||
const formControl = form.get(error.property); |
|||
if (formControl) { |
|||
formControl.setErrors({ |
|||
validationError: Object.values(error.constraints)[0] |
|||
}); |
|||
} |
|||
}); |
|||
} |
|||
}); |
|||
} |
Loading…
Reference in new issue