From 3b3b982fa377bf768baffe21f4b37c13cb0fca34 Mon Sep 17 00:00:00 2001 From: Shuaib Hasan Akib Date: Wed, 17 Dec 2025 01:05:49 +0600 Subject: [PATCH] docs: add documentation for schema validation with Signal Forms Fixes: #66098 (cherry picked from commit 3e57f9eaf5486dceb72d7a09fac578463d72ee81) --- .../content/guide/forms/signals/validation.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/adev/src/content/guide/forms/signals/validation.md b/adev/src/content/guide/forms/signals/validation.md index 6a7cb14d2fe..55d7658d1b0 100644 --- a/adev/src/content/guide/forms/signals/validation.md +++ b/adev/src/content/guide/forms/signals/validation.md @@ -658,6 +658,26 @@ While async validation runs, the field's `pending()` signal returns `true`. Use The `valid()` signal returns `false` while validation is pending, even if there are no errors yet. The `invalid()` signal only returns `true` if errors exist. +## Integration with schema validation libraries + +Signal Forms have built-in support for libraries that conform to [Standard Schema](https://standardschema.dev/) like [Zod](https://zod.dev/) or [Valibot](https://www.validbot.com/). The integration is provided via the `validateStandardSchema` function. This allows you to use existing schemas while maintaining Signal Forms' reactive validation benefits. + +```ts +import {form, validateStandardSchema} from '@angular/forms/signals'; +import * as z from 'zod'; + +// Define your schema +const userSchema = z.object({ + email: z.email(), + password: z.string().min(8), +}); + +// Use with Signal Forms +const userForm = form(signal({email: '', password: ''}), (schemaPath) => { + validateStandardSchema(schemaPath, userSchema); +}); +``` + ## Next steps This guide covered creating and applying validation rules. Related guides explore other aspects of Signal Forms: