angular / angular/components

bug(datepicker): input parse validation broken on custom DateAdapter<numeric>

Offen
#26,554 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
area: material/datepicker P3
Vorherrschende Sprache
TypeScript
Sterne
25k
Forks
6.8k
Ø Merge
1 T. 8 Std.
Gemergte PRs (30 T.)
91

Beschreibung

### Is this a regression?

- [ ] Yes, this behavior used to work in the previous version

### The previous version in which this bug was not present was

_No response_

### Description

Falsy check of value within [datepicker-input-base._isValidValue](https://github.com/angular/components/blob/a1d5614f18066c0c2dc2580c7b5099e8f68a8e74/src/material/datepicker/datepicker-input-base.ts#L382) leads to invalid numeric date values from custom DateAdapter to be treated as valid instead:
```javascript
! 0
// -> true
! NaN
// -> true
```
-> [parseValidator](https://github.com/angular/components/blob/a1d5614f18066c0c2dc2580c7b5099e8f68a8e74/src/material/datepicker/datepicker-input-base.ts#L150) will never return a 'matDatepickerParse' error.

### Reproduction

Steps to reproduce:
1. Use Custom DateAdapter which returns NaN on invalid()
2. Enter invalid characters on the datepicker's input.
3. Leave datepicker

### Expected Behavior

validation error ('format error') shown/raised.

### Actual Behavior

No error validation error ('format error') will be shown/raised.

([datepicker-input-base._isValidValue](https://github.com/angular/components/blob/a1d5614f18066c0c2dc2580c7b5099e8f68a8e74/src/material/datepicker/datepicker-input-base.ts#L382) should check for 'null' | 'undefined' instead of falsy)

### Environment

- Angular: 15.0.4
- CDK/Material: 15.0.4
- Browser(s): Chrome
- Operating System (e.g. Windows, macOS, Ubuntu): Windows

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginnen Sie in src/material/datepicker/datepicker-input-base.ts, insbesondere bei _isValidValue und parseValidator. Reproduzieren Sie das Problem mit einem numerischen benutzerdefinierten DateAdapter, der bei ungültiger Eingabe NaN zurückgibt, und überprüfen Sie anschließend, dass die Eingabe ungültiger Zeichen und das Verlassen des datepicker einen matDatepickerParse-Validierungsfehler erzeugt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
angular, typescript
Bereich
frontend
Issue-Typ
Bug
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
55/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.