Skip to content

Commit c55ba88

Browse files
feat: Pass propertyName to ValidateIf condition function
1 parent bfac4ea commit c55ba88

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

src/decorator/common/ValidateIf.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { getMetadataStorage } from '../../metadata/MetadataStorage';
88
* Ignores the other validators on a property when the provided condition function returns false.
99
*/
1010
export function ValidateIf(
11-
condition: (object: any, value: any) => boolean,
11+
condition: (object: any, value: any, propertyName: string) => boolean,
1212
validationOptions?: ValidationOptions
1313
): PropertyDecorator {
1414
return function (object: object, propertyName: string): void {

src/validation/ValidationExecutor.ts

+8-3
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ export class ValidationExecutor {
184184
const validationError = this.generateValidationError(object, value, propertyName);
185185
validationErrors.push(validationError);
186186

187-
const canValidate = this.conditionalValidations(object, value, conditionalValidationMetadatas);
187+
const canValidate = this.conditionalValidations(object, value, propertyName, conditionalValidationMetadatas);
188188
if (!canValidate) {
189189
return;
190190
}
@@ -242,9 +242,14 @@ export class ValidationExecutor {
242242
return validationError;
243243
}
244244

245-
private conditionalValidations(object: object, value: any, metadatas: ValidationMetadata[]): ValidationMetadata[] {
245+
private conditionalValidations(
246+
object: object,
247+
value: any,
248+
propertyName: string,
249+
metadatas: ValidationMetadata[]
250+
): ValidationMetadata[] {
246251
return metadatas
247-
.map(metadata => metadata.constraints[0](object, value))
252+
.map(metadata => metadata.constraints[0](object, value, propertyName))
248253
.reduce((resultA, resultB) => resultA && resultB, true);
249254
}
250255

0 commit comments

Comments
 (0)