angular / angular/components

bug(MatChipGrid): Chips form controls do not update values until focus is achieved and lost

オープン
#28,065 コメント 3 件 リアクション 6 件 担当者 0 名 GitHub で見る
area: material/chips P2
主要言語
TypeScript
スター
25k
フォーク
6.8k
平均マージ
1日 8時間
マージ済み PR(30日)
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

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。