bug(MatChipGrid): Chips form controls do not update values until focus is achieved and lost
- 主要语言
- TypeScript
- 星标
- 25k
- 派生
- 6.8k
- 平均合并
- 1 天 8 小时
- 30 天内合并 PR
- 91
描述
### 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
There are several scenarios where this is a breaking bug:
* With a form that has a required chips field and a conditionally disabled element, the element will remain disabled even after the field is valid until it loses focus. This is confusing to users if they don't realize they need to remove focus from the chips field in order for the element to become enabled.
* When a required chips component is the last field in a form, followed by a conditionally disabled submit button and a cancel button, a user may accidentally hit the cancel button if they attempt to tab to the submit button.
* With chips that can be dragged and dropped, the chips field does not necessarily receive focus when chips are moved around. This results in chips being visibly moved, but the form control value does not get updated. Since order generally matters for chips that can be dragged and dropped, a user could get the desired order visually, while a different order gets persisted upon submission.
### Reproduction
StackBlitz link: https://stackblitz.com/edit/angular-material-chips-bug-f6octd?file=src%2Fmain.ts
Steps to reproduce:
1. Create a required chips field followed by a submit button conditionally enabled by the validation of the preceding field
2. Focus on chips input
3. Select option or type out input
4. Hit **Enter** key on keyboard
5. Hit **Tab** key on keyboard
### Expected Behavior
The submit button should receive focus because it is enabled after hitting **Enter** in the chips field. The chips form control value should be updated immediately when a chip is created.
### Actual Behavior
The submit button does not receive focus.
### Environment
- Angular: 16.2.12
- CDK/Material: 16.2.11
- Browser(s): Tested in Chrome and Firefox, likely reproducible in others
- Operating System (e.g. Windows, macOS, Ubuntu): Tested in Windows, likely reproducible in others
贡献指南
调研方向
从 src/main.ts 中链接的 StackBlitz 复现开始,跟踪 MatChipGrid 的 form-control 更新行为。将 Enter、Tab 和拖放场景与预期的值立即传递和焦点行为进行比较。当控件值和依赖按钮的状态能够立即更新,而无需失去焦点时,即表示完成。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- angular, typescript
- 领域
- frontend
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 42/100