feat(datepicker): expose the validators that the datepicker uses internally as a public API
- Langage dominant
- TypeScript
- Étoiles
- 25k
- Forks
- 6.8k
- Merge moyen
- 1 j 8 h
- PR mergées (30 j)
- 91
Description
#### Reproduction
https://stackblitz.com/edit/angular-inex9i?file=app%2Fdatepicker-formats-example.ts
#### Steps to reproduce
1. Add a MatDatePicker to a component and bind it to a Reactive form control
2. Ensure you are reporting the built-in parse error (matDatepickerParse) using mat-error
3. Type in a bad date and see the parse error.
4. Call setValidators() on your reactive form control. It doesn't matter what is sent to setValidators
5. Enter invalid data and you will no longer see matDatepickerParse reported
#### Expected Behavior
Parsing errors after calling setValidators() should continue to report parsing errors
#### Actual Behavior
Parsing errors are no longer reported.
#### Additional Information
The provided DateAdapter (custom or not) is still used. However, since [datepicker-input](https://github.com/angular/components/blob/917a52e03cca1b3568d29094bbf430846ba1c3c9/src/material/datepicker/datepicker-input.ts) will provide a null value if the provided DateAdapter says the inputted date is invalid, you cannot workaround this issue with a custom validator.
Many complex forms may have conditional validation so using setValidators is completely expected.
#### Environment
- Angular: 8.0.0
- CDK/Material: 8.0.1
- Browser(s): Google Chrome 73.0.3683.75 (Official Build) (64-bit)
- Operating System Windows 10 64-bit
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par la reproduction liée et src/material/datepicker/datepicker-input.ts, en vous concentrant sur l'interaction entre les entrées invalides de l'adaptateur et les validateurs des formulaires réactifs. La modification est terminée lorsque les validateurs internes du datepicker sont disponibles via une API publique et que les erreurs matDatepickerParse apparaissent toujours après l'appel de setValidators().
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- angular, typescript
- Domaine
- frontend
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100