diff --git a/src/decorator/common/ValidateIf.ts b/src/decorator/common/ValidateIf.ts index 14f1deeb77..f83911817e 100644 --- a/src/decorator/common/ValidateIf.ts +++ b/src/decorator/common/ValidateIf.ts @@ -8,7 +8,7 @@ import { getMetadataStorage } from '../../metadata/MetadataStorage'; * Ignores the other validators on a property when the provided condition function returns false. */ export function ValidateIf( - condition: (object: any, value: any) => boolean, + condition: (object: any, value: any, propertyName: string) => boolean, validationOptions?: ValidationOptions ): PropertyDecorator { return function (object: object, propertyName: string): void { diff --git a/src/validation/ValidationExecutor.ts b/src/validation/ValidationExecutor.ts index 98d09fce27..44173cb916 100644 --- a/src/validation/ValidationExecutor.ts +++ b/src/validation/ValidationExecutor.ts @@ -184,7 +184,7 @@ export class ValidationExecutor { const validationError = this.generateValidationError(object, value, propertyName); validationErrors.push(validationError); - const canValidate = this.conditionalValidations(object, value, conditionalValidationMetadatas); + const canValidate = this.conditionalValidations(object, value, propertyName, conditionalValidationMetadatas); if (!canValidate) { return; } @@ -242,9 +242,14 @@ export class ValidationExecutor { return validationError; } - private conditionalValidations(object: object, value: any, metadatas: ValidationMetadata[]): ValidationMetadata[] { + private conditionalValidations( + object: object, + value: any, + propertyName: string, + metadatas: ValidationMetadata[] + ): ValidationMetadata[] { return metadatas - .map(metadata => metadata.constraints[0](object, value)) + .map(metadata => metadata.constraints[0](object, value, propertyName)) .reduce((resultA, resultB) => resultA && resultB, true); }