bind-query-params icon indicating copy to clipboard operation
bind-query-params copied to clipboard

Prevent the change of query params when a form is invalid

Open rafaelss95 opened this issue 3 years ago • 3 comments

I'm submitting a...


[ ] Regression (a behavior that used to work and stopped working in a new release)
[ ] Bug report  
[ ] Performance issue
[x] Feature request
[ ] Documentation issue or request
[ ] Support request
[ ] Other... Please describe:

Current behavior

AFAIK there's no way to prevent the change of query params when a form is invalid.

Expected behavior

I'd like to have an option to prevent the change of query params when a FormGroup is invalid.

Minimal reproduction of the problem with instructions

https://stackblitz.com/edit/angular-ewwssg-nwxzlt

  1. Select a start date;
  2. Select an end date less than start date;
  3. Check the error + change of the query params.

This use case is with date, but I have other cases where I have a masked input and this is also problematic.

What is the motivation / use case for changing the behavior?

I have two datepicker inputs that represent a range that an user can select. As a business rule, the start date can't be greater than the end date, but as I use updateOn: submit (the filter has a submit button) I don't have a way to do this check before the user submits the form. It would be nice then to have an option to not change the query params until the form is valid.

Environment


Angular version: X.Y.Z
11

Browser:
- [ ] Chrome (desktop) version XX
- [ ] Chrome (Android) version XX
- [ ] Chrome (iOS) version XX
- [ ] Firefox version XX
- [ ] Safari (desktop) version XX
- [ ] Safari (iOS) version XX
- [ ] IE version XX
- [ ] Edge version XX
 
For Tooling issues:
- Node version: XX  
- Platform:  

Others:

rafaelss95 avatar Feb 15 '21 05:02 rafaelss95

Seems reasonable to me. You're welcome to submit a PR.

NetanelBasal avatar Feb 15 '21 06:02 NetanelBasal

Hey, do you have any direction to point up? I mean, where should I add such option?

I was thinking of having an InjectionToken like BIND_QUERY_PARAMS_CONFIG with a config that contains a flag like ignoreInvalidForm, which is false by default (btw, these names are just thoughts), but I don't know if there's a better option. I'll wait your contact before start working on this.

rafaelss95 avatar Feb 15 '21 11:02 rafaelss95

I think we should allow it in the following cases:

  • globally
  • manager instance
  • def

NetanelBasal avatar Feb 15 '21 12:02 NetanelBasal