angular / angular/components

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

Đang mở
#26,554 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
area: material/datepicker P3
Ngôn ngữ chính
TypeScript
Star
25k
Fork
6.8k
Merge trung bình
1 ngày 8 giờ
Pull request đã merge (30 ngày)
91

Mô tả

### 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

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu trong src/material/datepicker/datepicker-input-base.ts, đặc biệt là _isValidValue và parseValidator. Tái hiện vấn đề với một DateAdapter tùy chỉnh dạng số trả về NaN khi đầu vào không hợp lệ, sau đó xác minh rằng việc nhập các ký tự không hợp lệ và rời khỏi datepicker sẽ tạo ra lỗi xác thực matDatepickerParse.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
angular, typescript
Lĩnh vực
frontend
Loại issue
Lỗi
Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Đặc tả rõ ràng
Mức phù hợp với người mới
55/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.