angular / angular/components

Add 'compareWith' option to mat-radio-group just like mat-select

Ouverte
#10,495 17 commentaires 36 réactions 0 personnes assignées Voir sur GitHub
area: material/radio feature help wanted P4
Langage dominant
TypeScript
Étoiles
25k
Forks
6.8k
Merge moyen
1 j 8 h
PR mergées (30 j)
91

Description

#### Bug, feature request, or proposal:
Feature request: There is an issue with the mat-radio-group. If you use an object as the value for the form control the corresponding radio button is not checked. It only uses reference based comparison for checking which button should be highlighted.

I would like the ability to specify a comparison method to use while the mat-radio-group is deciding which item is selected. Just like how you can already specify a 'compareWith' method for a mat-select control.

#### What is the expected behavior?
If you use basic values it works as expected. Example [here](https://stackblitz.com/edit/angular-1shnoa-x1fwoc?file=app/radio-ng-model-example.ts). In this case the value is set to 1.1 and the 'one,one' button is selected.

#### What is the current behavior?
However when you use an array, it does not work. Example [here](https://stackblitz.com/edit/angular-1shnoa-dfc9q3?file=app/radio-ng-model-example.ts). In this case the value is set to [1,1] and none of the buttons are selected. Even though the form control's value is clearly shown to be [1,1].

#### What is the use-case or motivation for changing an existing behavior?
I am currently trying to dynamically generate a form based on some data given back from an API. The api gives me choices and a selected value to show by default.

`{
tag: 'radio button',
value: '[0,1]',
choices: [
{
tag: 'option 1',
value: [0,0]
},
{
tag: 'option 2',
value: [0,1]
}
]
}`

In the spec for mat-radio-group and mat-radio-button the value is of type any. So it should support any type of value I want to use.

The current mat-select control already possesses this feature and I would like to see it paralleled in the radio button control. [Here](https://stackblitz.com/edit/angular-1shnoa-bsju2l?file=app/radio-ng-model-example.ts) is an example of the select control with the 'compareWith' attribute. As you can see it selects the "one,one" value by default.

#### Which versions of Angular, Material, OS, TypeScript, browsers are affected?
Angular: 5.2.6
@angular/material: 5.2.3
typescript: 2.4.2

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par comparer les implémentations de mat-radio-group et mat-select ainsi que leurs spécifications associées, en utilisant les exemples StackBlitz liés pour reproduire la sélection de valeurs d’objets et de tableaux. C’est terminé lorsque mat-radio-group prend en charge une méthode compareWith configurable pour sélectionner des valeurs et que le comportement est couvert par les spécifications de radio-group et de radio-button.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
angular, typescript
Domaine
frontend
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.