angular / angular/components

Radio Button with object as value uncheckes on reset/setvalue/patchvalue

Aperta
#13,432 13 commenti 1 reazione 0 assegnatari Vedi su GitHub
area: material/radio P4
Lingua principale
TypeScript
Stelle
25k
Fork
6.8k
Merge medio
1g 8h
PR unite (30g)
91

Descrizione

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

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia con la riproduzione StackBlitz collegata e analizza la gestione di value/checked in MatRadioGroup e MatRadioButton. Riproduci chiamate ripetute a reset, setValue e patchValue con valori oggetto, quindi traccia il modo in cui viene confrontato il secondo aggiornamento. Il lavoro è completato quando il radio selezionato rimane selezionato dopo ogni aggiornamento ripetuto e dopo la modifica delle opzioni.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
angular, typescript
Ambito
frontend
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.