Radio Button with object as value uncheckes on reset/setvalue/patchvalue
- 主要言語
- TypeScript
- スター
- 25k
- フォーク
- 6.8k
- 平均マージ
- 1日 8時間
- マージ済み PR(30日)
- 91
説明
#### Bug, feature request, or proposal:
Bug
#### What is the expected behavior?
Just read the next part it will become obvious.
#### What is the current behavior?
When using objects as the value for MatRadioGroup and MatRadioButton the current implementation lacks a `compareWith` property like the current implementation of MatSelect. Normally the radio button will only do a reference based comparison of the value compared to the radio groups value to see if a button should be checked. This is an issue because I am using an API to get the values for the radio group and buttons this interferes with this way of doing a comparison.
However MatRadioButton does have a property called `checked` which I can use. I wrote my own compare method and have it check the current value of the MatRadioGroup with the current value of the MatRadioButton and return true to set the `checked` state of the radio button.
When I use `reset(value)`, `setValue(value)`, or `patchValue(value)` or click on a radio to change the value of the MatRadioGroup, everything works. However performing this twice with the same object results in the radio being unchecked.
#### What are the steps to reproduce?
https://stackblitz.com/edit/angular-material-radio-not-checked-bug
Press the set button twice.
OR
Press the set button then press the reset button twice
OR
Change the selected radio by clicking on a new option and then press the reset button twice
OR
Do not change anything and right away (after a fresh page load) press the reset button
#### What is the use-case or motivation for changing an existing behavior?
Allowing me to use objects or arrays with MatRadioGroup/MatRadioButton while preserving the functionality of a simple reset button for my form.
#### Which versions of Angular, Material, OS, TypeScript, browsers are affected?
material 5 and 6
#### Is there anything else we should know?
This may be related to:
https://github.com/angular/material2/issues/11368
I also think that this feature request would also help potentially fix this issue depending on implementation:
https://github.com/angular/material2/issues/10495
コントリビューションガイド
調査の方向性
リンクされた StackBlitz の再現から始め、MatRadioGroup と MatRadioButton における value/checked の処理を調べてください。オブジェクト値を使って reset、setValue、patchValue の呼び出しを繰り返し再現し、その後、2 回目の更新がどのように比較されるかを追跡してください。各反復更新の後、およびオプションを変更した後も、選択されたラジオボタンがチェックされたままであれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- angular, typescript
- 領域
- frontend
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100