Skip to content

Forms signal minDate and maxDate validator#67544

Closed
brunoredes wants to merge 1 commit intoangular:mainfrom
brunoredes:forms-signal-min-max-validator
Closed

Forms signal minDate and maxDate validator#67544
brunoredes wants to merge 1 commit intoangular:mainfrom
brunoredes:forms-signal-min-max-validator

Conversation

@brunoredes
Copy link
Copy Markdown

PR Checklist

Please check if your PR fulfills the following requirements:

PR Type

What kind of change does this PR introduce?

  • Bugfix
  • Feature
  • Code style update (formatting, local variables)
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • CI related changes
  • Documentation content changes
  • angular.dev application / infrastructure changes
  • Other... Please describe:

What is the current behavior?

The min() and max() validators only accept numeric values as the constraint argument. When used with string paths, passing a string like '2025-06-01' results in a TypeScript error.

This prevents using these validators for date/time inputs without workarounds.

Issue Number: 151664003

What is the new behavior?

  • Added minDate() validator that validates string-based form fields (date, time, datetime-local) are greater than or equal to a given minimum string value using lexicographic comparison.
  • Added maxDate() validator that validates string-based form fields (date, time, datetime-local) are less than or equal to a given maximum string value using lexicographic comparison.
  • Both validators support static string values, dynamic values via LogicFn, custom error messages, and custom error functions.
  • Empty strings are treated as valid (skipped), consistent with other validators like min() and max().

Does this PR introduce a breaking change?

  • Yes
  • No

Other information

Solves Experimental Signal Forms (view)

@pullapprove pullapprove bot requested a review from JeanMeche March 10, 2026 13:28
@angular-robot angular-robot bot added detected: feature PR contains a feature commit area: forms labels Mar 10, 2026
@ngbot ngbot bot added this to the Backlog milestone Mar 10, 2026
@JeanMeche JeanMeche requested a review from kirjs March 10, 2026 13:30
Copy link
Copy Markdown
Member

@JeanMeche JeanMeche left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like this implementation is incomplete (or at least not covered by tests).

Check out packages/forms/signals/test/web/form_field_directive.spec.ts, you'll see that min/minlength etc add the matching attribute to the dom.

@brunoredes

This comment was marked as resolved.

@brunoredes brunoredes force-pushed the forms-signal-min-max-validator branch from 7bdb742 to 15b46d2 Compare March 25, 2026 13:11
@brunoredes brunoredes requested a review from JeanMeche March 25, 2026 13:11
@brunoredes brunoredes force-pushed the forms-signal-min-max-validator branch from 15b46d2 to 9139ac5 Compare March 25, 2026 13:17
Add dedicated `minDate()` and `maxDate()` validation rules for string-based
date and time form fields. These validators use lexicographic string comparison,
which correctly handles ISO-formatted values from `<input type="date">`,
`<input type="time">`, and `<input type="datetime-local">`.

Both validators support static string values, dynamic values via LogicFn,
and custom error messages/functions.
@brunoredes brunoredes force-pushed the forms-signal-min-max-validator branch from 9139ac5 to f8d2abd Compare March 25, 2026 14:15
@JeanMeche
Copy link
Copy Markdown
Member

This issue has been picked up by the team. #68001

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants