angular / angular/components

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

オープン
#10,495 コメント 17 件 リアクション 36 件 担当者 0 名 GitHub で見る
area: material/radio feature help wanted P4
主要言語
TypeScript
スター
25k
フォーク
6.8k
平均マージ
1日 8時間
マージ済み PR(30日)
91

説明

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

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず、mat-radio-group と mat-select の実装および関連する spec を比較し、リンクされた StackBlitz の例を使用してオブジェクト値と配列値の選択を再現します。mat-radio-group が値の選択用に設定可能な compareWith メソッドをサポートし、その動作が radio-group と radio-button の spec でカバーされていれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
angular, typescript
領域
frontend
issue の種類
機能追加
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

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

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