diff --git a/packages/forms/signals/src/api/validators/standard_schema.ts b/packages/forms/signals/src/api/validators/standard_schema.ts index 687981a9c1a..7ec8998512d 100644 --- a/packages/forms/signals/src/api/validators/standard_schema.ts +++ b/packages/forms/signals/src/api/validators/standard_schema.ts @@ -121,5 +121,5 @@ function standardIssueToFormTreeError( const pathKey = typeof pathPart === 'object' ? pathPart.key : pathPart; target = target[pathKey] as FieldTree>; } - return addDefaultField(standardSchemaError(issue), target); + return addDefaultField(standardSchemaError(issue, {message: issue.message}), target); } diff --git a/packages/forms/signals/test/node/api/validators/standard_schema.spec.ts b/packages/forms/signals/test/node/api/validators/standard_schema.spec.ts index 3b8766fc7df..51450dd48c0 100644 --- a/packages/forms/signals/test/node/api/validators/standard_schema.spec.ts +++ b/packages/forms/signals/test/node/api/validators/standard_schema.spec.ts @@ -194,4 +194,19 @@ describe('standard schema integration', () => { expect(f().errors().length).toBe(1); }); + + it('should set the error message from the schema issue', () => { + const model = signal({age: -5}); + const f = form( + model, + (p) => { + validateStandardSchema(p.age, z.number().min(0, {message: 'Age must be non-negative'})); + }, + { + injector: TestBed.inject(Injector), + }, + ); + + expect(f.age().errors()[0].message).toBe('Age must be non-negative'); + }); });