diff --git a/packages/common/pipes/validation.pipe.ts b/packages/common/pipes/validation.pipe.ts index fd37802b5f0..2e3c582359c 100644 --- a/packages/common/pipes/validation.pipe.ts +++ b/packages/common/pipes/validation.pipe.ts @@ -18,7 +18,7 @@ import { HttpErrorByCode, } from '../utils/http-error-by-code.util'; import { loadPackage } from '../utils/load-package.util'; -import { isNil } from '../utils/shared.utils'; +import { isNil, isUndefined } from '../utils/shared.utils'; export interface ValidationPipeOptions extends ValidatorOptions { transform?: boolean; @@ -179,6 +179,13 @@ export class ValidationPipe implements PipeTransform { return value; } if (metatype === Boolean) { + if (isUndefined(value)) { + // This is an workaround to deal with optional boolean values since + // optional booleans shouldn't be parsed to a valid boolean when + // they were not defined + return undefined; + } + // Any fasly value but `undefined` will be parsed to `false` return value === true || value === 'true'; } if (metatype === Number) {