Angular2 - Associazione pulsante radio


120

Voglio usare il pulsante di opzione in un modulo che utilizza Angular 2

Options : <br/>

1 : <input name="options" ng-control="options" type="radio" value="1"  [(ng-model)]="model.options" ><br/>

2 : <input name="options" ng-control="options" type="radio" value="2" [(ng-model)]="model.options" ><br/>

Il valore iniziale di model.options è 1

quando la pagina viene caricata il primo radio button non viene spuntato e le modifiche non vengono vincolate al modello

Qualche idea ?


1
Esempio di elenco dinamico della radio qui freakyjolly.com/how-to-show-radio-input-listing-in-angular-6
Code Spy

Risposte:


108

utilizza [value] = "1" invece di value = "1"

<input name="options" ng-control="options" type="radio" [value]="1"  [(ngModel)]="model.options" ><br/>

<input name="options" ng-control="options" type="radio" [value]="2" [(ngModel)]="model.options" ><br/>

Modificare:

Come suggerito da thllbrg "Per angular 2.1+ usa [(ngModel)]invece di [(ng-model)]"


7
Qual è lo scopo dell'attributo ng-control? Sembra che tutto funzioni senza di esso.
Monsignore

4
In Angular 4+ devi usare [(ngModel)]invece di [(ng-model)]. Leggi di nuovo .
Claudio Holanda

1
Funziona solo su aggiungi nuova modalità. Non funziona per la modalità di modifica. Non sono riuscito a trovare qual è il motivo. Nel nuovo valore assegnato aperto per il modello funzionante ma non funzionante quando recupero i valori dal server e li mostro sullo schermo.Ma se visualizzo nell'etichetta il valore che mostra ma non funziona controllato.
Vinoth Kumar

4
Nel mio caso, ho finito per usare value="1" [(ngModel)]="model.options". Racchiudere le valueparentesi quadre non funzionava
Sylvan D Ash

2
Strano, ma anche nel mio caso ho dovuto usare value = "1" invece di [value] = "1". Sto usando Angular 6
codingbbq

61

Nota: l'associazione del pulsante di opzione è ora un file funzionalità supportata da RC4 in poi - vedi questa risposta

Esempio di pulsante di opzione con RadioControlValueAccessor personalizzato simile a CheckboxControlValueAccessor ( aggiornato con Angular 2 rc-1 )

App.ts

import {Component} from "@angular/core";
import {FORM_DIRECTIVES} from "@angular/common";
import {RadioControlValueAccessor} from "./radio_value_accessor";
import {bootstrap} from '@angular/platform-browser-dynamic';

@Component({
    selector: "my-app",
    templateUrl: "template.html",
    directives: [FORM_DIRECTIVES, RadioControlValueAccessor]
})
export class App {

    model;

    constructor() {
        this.model = {
            sex: "female"
        };
    }
}

template.html

<div>
    <form action="">
        <input type="radio" [(ngModel)]="model.sex"  name="sex" value="male">Male<br>
        <input type="radio" [(ngModel)]="model.sex"  name="sex" value="female">Female
    </form>

    <input type="button" value="select male" (click)="model.sex='male'">
    <input type="button" value="select female" (click)="model.sex='female'">
    <div>Selected Radio: {{model.sex}}</div>
</div>

radio_value_accessor.ts

import {Directive, Renderer, ElementRef, forwardRef} from '@angular/core';
import {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/common';

export const RADIO_VALUE_ACCESSOR: any = {
    provide: NG_VALUE_ACCESSOR,
    useExisting: forwardRef(() => RadioControlValueAccessor),
    multi: true
};

@Directive({
   selector:
       'input[type=radio][ngControl],input[type=radio][ngFormControl],input[type=radio][ngModel]',
   host: {'(change)': 'onChange($event.target.value)', '(blur)': 'onTouched()'},
   bindings: [RADIO_VALUE_ACCESSOR]
})
export class RadioControlValueAccessor implements ControlValueAccessor {
   onChange = (_) => {};
   onTouched = () => {};

   constructor(private _renderer: Renderer, private _elementRef: ElementRef) {}

   writeValue(value: any): void {
       this._renderer.setElementProperty(this._elementRef.nativeElement, 'checked', value == this._elementRef.nativeElement.value);
   }
   registerOnChange(fn: (_: any) => {}): void { this.onChange = fn; }
   registerOnTouched(fn: () => {}): void { this.onTouched = fn; }
}

Fonte: https://github.com/angular2-school/angular2-radio-button

Demo live di Plunker: http://plnkr.co/edit/aggee6An1iHfwsqGoE3q?p=preview


4
Allo stesso modo in cui le domande dovrebbero includere il codice pertinente nella domanda , anche le risposte dovrebbero. Questo potrebbe teoricamente rispondere alla domanda, ma sarebbe meglio includere le parti essenziali della risposta qui per i futuri utenti e fornire il collegamento come riferimento. Le risposte dominate dai link possono diventare non valide a causa della decomposizione dei link .
Mogsdad

fantastico .. è strano che non sia incluso nel quadro
Mourad Zouabi

Ottima soluzione! Una piccola aggiunta: Sto usando css ingresso [type = "radio"]: controllati per lo stile, ma questo funziona solo per me quando si utilizza la nativeElement di _elementRef anziché soltanto _elementRef: this._renderer.setElementProperty(this._elementRef.nativeElement, 'checked', value == this._elementRef.nativeElement.value);
bas

2
@GregWoods ha aggiornato il post con nuove modifiche e grazie per la richiesta di pull,
Nidin Vinayakan

1
Ora è supportato in modo nativo, utilizzando angular rc4 e versioni successive
Ckln

45

La mia soluzione manuale, che prevede l'aggiornamento manuale model.optionsquando viene selezionato un nuovo pulsante di opzione:

template: `
  <label *ngFor="let item of radioItems">
    <input type="radio" name="options" (click)="model.options = item" 
     [checked]="item === model.options">
    {{item}}
  </label>`

class App {
  radioItems = 'one two three'.split(' ');
  model      = { options: 'two' };
}

Questo Plunkerdimostra quanto sopra, oltre a come utilizzare un pulsante per modificare il pulsante di opzione selezionato, ovvero per dimostrare che l'associazione dei dati è bidirezionale:

<button (click)="model.options = 'one'">set one</button>

ho due domande. primo: in get debug()funzione cosa getsignifica? il secondo è: esiste un'alternativa come questa risposta per le caselle di controllo? si prega di fornire del codice anche per le caselle di controllo. grazie +1 per l'ottima risposta.
Pardeep Jain

2
@PardeepJain, getè una funzione di accesso di TypeScript . Pubblica una domanda per le caselle di controllo.
Mark Rajcok

può inviare parametri come questo '{{debug (abc)}}'?
Pardeep Jain

1
@PardeepJain, vedere plnkr.co/edit/iH3Te9EK7Y1dPXMzfWt6?p=preview . Non puoi chiamare un setter come una funzione, quindi Anotherdate('2015-05-18T02:30:56')non funzionerà. I setter vengono chiamati quando si tenta di assegnare un valore a una proprietà. Nel mio plunker ho creato una setDate()funzione per \ hat che accetta un nuovo valore di data, che poi assegna a Anotherdate. Quell'incarico chiamerà automaticamente l'incastonatore.
Mark Rajcok

1
@PardeepJain, i {{}}binding vengono rivalutati ad ogni ciclo di rilevamento delle modifiche. Ho implementato ngDoCheck()in AppComponent nel plunker per contare i cicli di rilevamento delle modifiche. Da ciò vediamo che il rilevamento delle modifiche viene chiamato 3 volte. In modalità dev, le associazioni vengono controllate due volte , quindi le 6 volte.
Mark Rajcok

36

Ecco il modo migliore per utilizzare i pulsanti di opzione in Angular2. Non è necessario utilizzare l'evento (clic) o un RadioControlValueAccessor per modificare il valore della proprietà associata, l'impostazione della proprietà [selezionata] fa il trucco.

<input name="options" type="radio" [(ngModel)]="model.options" [value]="1"
       [checked]="model.options==1" /><br/>
<input name="options" type="radio"  [(ngModel)]="model.options" [value]="2"
       [checked]="model.options==2" /><br/>

Ho pubblicato un esempio di utilizzo dei pulsanti di opzione : Angular 2: come creare pulsanti di opzione da enum e aggiungere binding a due vie? Funziona almeno da Angular 2 RC5.


2
Funziona solo su aggiungi nuova modalità. Non funziona per la modalità di modifica. Non sono riuscito a trovare qual è il motivo. Nel nuovo valore assegnato aperto per il modello funzionante ma non funzionante quando recupero i valori dal server e li mostro sullo schermo.Ma se visualizzo nell'etichetta il valore che mostra ma non funziona controllato.
Vinoth Kumar

1
@VinothKumar Sei riuscito a far funzionare la modalità di modifica? Ho lo stesso problema
Dave Nottage

18

Questo problema è stato risolto nella versione Angular 2.0.0-rc.4, rispettivamente nelle forme.

Includere "@angular/forms": "0.2.0"in package.json.

Quindi estendi il tuo bootstrap in main. Parte rilevante:

...
import { AppComponent } from './app/app.component';
import { disableDeprecatedForms, provideForms } from '@angular/forms';

bootstrap(AppComponent, [
    disableDeprecatedForms(),
    provideForms(),
    appRouterProviders
]);

Ho questo in .html e funziona perfettamente: value: {{buildTool}}

<form action="">
    <input type="radio" [(ngModel)]="buildTool" name="buildTool" value="gradle">Gradle <br>
    <input type="radio" [(ngModel)]="buildTool" name="buildTool" value="maven">Maven
</form>

questa è la risposta corretta a partire da rc4 e solo per aggiungere, le radio possono essere utilizzate con enumerazioni.
Ron

8
eseguendo RC7, dovevo posizionare parentesi intorno a [valore]
Brian Vander Plaats

1
Penso che tu abbia bisogno delle parentesi perché stai usando una variabile del tuo componente invece di una stringa, nel mio caso la risposta di @ Zolcsi ha funzionato bene!
Naeem Baghi

1
Questa parte con disableDeprecatedFormse provideFormssembra magica e non ha alcun senso. Cosa fanno queste cose? Questo è un codice ridondante illeggibile che crea cose imprevedibili di scala sconosciuta.
Gherman

6

Stavo cercando il metodo giusto per gestire quei pulsanti di opzione, ecco un esempio per una soluzione che ho trovato qui:

<tr *ngFor="let entry of entries">
    <td>{{ entry.description }}</td>
    <td>
        <input type="radio" name="radiogroup" 
            [value]="entry.id" 
            (change)="onSelectionChange(entry)">
    </td>
</tr>

Notare onSelectionChange che passa l'elemento corrente al metodo.


4

L'ingresso radio non sembra ancora essere supportato. Ci dovrebbe essere un valore di ingresso della radio di accesso (simile a quella di casella uno , dove si pone 'controllato' attr qui ), ma non ho trovato alcuna. Quindi ne ho implementato uno; puoi verificarlo qui .



@JimB: purtroppo sembra che la semantica di quella nativa sia diversa .
Kiara Grouwstra,

4

[value] = "item" using * ngFor funziona anche con Reactive Forms in Angular 2 e 4

<label *ngFor="let item of items">
    <input type="radio" formControlName="options" [value]="item">
    {{item}}
</label>`

1
Come eseguire la selezione singola ??
Belter

4

Quanto segue ha risolto il mio problema, considera l'aggiunta di input radio all'interno del formtag e utilizza il [value]tag per visualizzare il valore.

<form name="form" (ngSubmit)="">
    <div *ngFor="let item of options">
        <input [(ngModel)]="model.option_id" type="radio" name="options" [value]="item.id"> &nbsp; {{ item.name }}
    </div>
</form>

3

Ecco una soluzione che funziona per me. Implica l'associazione del pulsante di opzione, ma non l'associazione ai dati aziendali, ma l'associazione allo stato del pulsante di opzione. Probabilmente NON è la soluzione migliore per nuovi progetti, ma è appropriata per il mio progetto. Il mio progetto ha un sacco di codice esistente scritto in una tecnologia diversa che sto portando su Angular. Il vecchio codice segue uno schema in cui il codice è molto interessato ad esaminare ogni pulsante di opzione per vedere se è quello selezionato. La soluzione è una variazione delle soluzioni di gestione dei clic, alcune delle quali sono già state menzionate in Stack Overflow. Il valore aggiunto di questa soluzione può essere:

  1. Funziona con il modello del vecchio codice con cui devo lavorare.
  2. Ho creato una classe helper per cercare di ridurre il numero di istruzioni "if" nel gestore dei clic e per gestire qualsiasi gruppo di pulsanti di opzione.

Questa soluzione comporta

  1. Utilizzo di un modello diverso per ogni pulsante di opzione.
  2. Impostazione dell'attributo "verificato" con il modello del pulsante di opzione.
  3. Passaggio del modello del pulsante di opzione selezionato alla classe helper.
  4. La classe helper si assicura che i modelli siano aggiornati.
  5. Al "submit time" questo permette al vecchio codice di esaminare lo stato dei pulsanti radio per vedere quale è selezionato esaminando i modelli.

Esempio:

<input type="radio"
    [checked]="maleRadioButtonModel.selected"
    (click)="radioButtonGroupList.selectButton(maleRadioButtonModel)"

...

 <input type="radio"
    [checked]="femaleRadioButtonModel.selected"
    (click)="radioButtonGroupList.selectButton(femaleRadioButtonModel)"

...

Quando l'utente fa clic su un pulsante di opzione, viene richiamato il metodo selectButton della classe helper. Viene passato il modello per il pulsante di opzione che è stato cliccato. La classe helper imposta il campo booleano "selected" del modello passato su true e imposta il campo "selected" di tutti gli altri modelli di pulsanti di opzione su false.

Durante l'inizializzazione il componente deve costruire un'istanza della classe helper con un elenco di tutti i modelli di pulsanti di opzione nel gruppo. Nell'esempio, "radioButtonGroupList" sarebbe un'istanza della classe helper il cui codice è:

 import {UIButtonControlModel} from "./ui-button-control.model";


 export class UIRadioButtonGroupListModel {

  private readonly buttonList : UIButtonControlModel[];
  private readonly debugName : string;


  constructor(buttonList : UIButtonControlModel[], debugName : string) {

    this.buttonList = buttonList;
    this.debugName = debugName;

    if (this.buttonList == null) {
      throw new Error("null buttonList");
    }

    if (this.buttonList.length < 2) {
      throw new Error("buttonList has less than 2 elements")
    }
  }



  public selectButton(buttonToSelect : UIButtonControlModel) : void {

    let foundButton : boolean = false;
    for(let i = 0; i < this.buttonList.length; i++) {
      let oneButton : UIButtonControlModel = this.buttonList[i];
      if (oneButton === buttonToSelect) {
        oneButton.selected = true;
        foundButton = true;
      } else {
        oneButton.selected = false;
      }

    }

    if (! foundButton) {
      throw new Error("button not found in buttonList");
    }
  }
}

2

Esempio di elenco radio Angular 8:

fonte Link

inserisci qui la descrizione dell'immagine

Risposta JSON

    [
            {
                "moduleId": 1,
                "moduleName": "Employee",
                "subModules":[
                    {
                        "subModuleId": 1,
                        "subModuleName": "Add Employee",
                        "selectedRightType": 1,
                    },{
                        "subModuleId": 2,
                        "subModuleName": "Update Employee",
                        "selectedRightType": 2,
                    },{
                        "subModuleId": 3,
                        "subModuleName": "Delete Employee",
                        "selectedRightType": 3,
                    }
                ]
            },  
            {
                "moduleId": 2,
                "moduleName": "Company",
                "subModules":[
                    {
                        "subModuleId": 4,
                        "subModuleName": "Add Company",
                        "selectedRightType": 1,
                    },{
                        "subModuleId": 5,
                        "subModuleName": "Update Company",
                        "selectedRightType": 2,
                    },{
                        "subModuleId": 6,
                        "subModuleName": "Delete Company",
                        "selectedRightType": 3,
                    }
                ]
            },  
            {
                "moduleId": 3,
                "moduleName": "Tasks",
                "subModules":[
                    {
                        "subModuleId": 7,
                        "subModuleName": "Add Task",
                        "selectedRightType": 1,
                    },{
                        "subModuleId": 8,
                        "subModuleName": "Update Task",
                        "selectedRightType": 2,
                    },{
                        "subModuleId": 9,
                        "subModuleName": "Delete Task",
                        "selectedRightType": 3,
                    }
                ]
            }
    ]

Modello HTML

        <div *ngFor="let module of modules_object">
            <div>{{module.moduleName}}</div>
            <table width="100%">

                <thead>
                    <tr>
                        <th>Submodule</th>
                        <th>
                            <input type="radio" name="{{module.moduleName}}_head_radio" [(ngModel)]="module.selHeader" (change)="selAllColumn(module)" [value]="1"> Read Only
                        </th>
                        <th>
                            <input type="radio" name="{{module.moduleName}}_head_radio" [(ngModel)]="module.selHeader" (change)="selAllColumn(module)" [value]="2"> Read Write
                        </th>
                        <th>
                            <input type="radio" name="{{module.moduleName}}_head_radio" [(ngModel)]="module.selHeader" (change)="selAllColumn(module)" [value]="3"> No Access
                        </th>
                    </tr>
                </thead>

                <tbody>
                    <tr *ngFor="let sm of module.subModules">
                        <td>{{sm.subModuleName}}</td>
                        <td>
                            <input type="radio" [checked]="sm.selectedRightType == '1'" [(ngModel)]="sm.selectedRightType" name="{{sm.subModuleId}}_radio" [value]="1"> 
                        </td>
                        <td class="cl-left">
                            <input type="radio" [checked]="sm.selectedRightType == '2'" [(ngModel)]="sm.selectedRightType" name="{{sm.subModuleId}}_radio" [value]="2"> 
                        </td>
                        <td class="cl-left">
                            <input type="radio" [checked]="sm.selectedRightType == '3'" [(ngModel)]="sm.selectedRightType" name="{{sm.subModuleId}}_radio" [value]="3"> 
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>

1

Soluzione e soluzione alternativa più semplici:

<input name="toRent" type="radio" (click)="setToRentControl(false)">
<input name="toRent" type="radio" (click)="setToRentControl(true)">

setToRentControl(value){
    this.vm.toRent.updateValue(value);
    alert(value); //true/false
}

2
In questo caso, come imposteresti un pulsante di opzione sul valore predefinito dall'inizio?
EricC

Inoltre ci sarebbe una situazione in cui l'utente cambia la scelta frequentemente, ogni volta ci sarebbe una funzione eseguita per ogni controllo,
blackHawk

1

Ho creato una versione utilizzando solo un evento click sugli elementi caricati e passando il valore della selezione nella funzione "getSelection" e aggiornando il modello.

Nel tuo modello:

<ul>
     <li *ngFor="let p of price"><input type="radio" name="price"      (click)="getValue(price.value)" value="{{p}}" #price> {{p}} 
     </li>
</ul>

La tua classe:

export class App {

  price:string;

  price = ["1000", "2000", "3000"];

  constructor() {   }

  model = new SomeData(this.price);

  getValue(price){
    this.model.price = price;
  }
}

Vedi esempio: https://plnkr.co/edit/2Muje8yvWZVL9OXqG0pW?p=info


1

Per quanto questa risposta potrebbe non essere la migliore a seconda del tuo caso d'uso, funziona. Invece di usare il pulsante Radio per una selezione maschile e femminile, utilizza <select> </select>perfettamente le opere, sia per il salvataggio che per la modifica.

<select formControlName="gender" name="gender" class="">
  <option value="M">Male</option>
  <option value="F">Female</option>
</select>

Quanto sopra dovrebbe andare bene, per la modifica utilizzando FormGroup con patchValue. Per creare, potresti usare al [(ngModel)]posto di formControlName. Funziona ancora.

Il lavoro idraulico coinvolto con il pulsante di opzione, ho scelto invece di andare con la selezione. Visivamente e dal punto di vista dell'esperienza utente, non sembra essere il migliore, ma dal punto di vista di uno sviluppatore è molto più facile.


1

Alla modifica del pulsante di opzione ottieni il valore dei rispettivi pulsanti con queste linee

<label class="radio-inline">
<input class="form-check-input" type="radio" [(ngModel)]="dog" name="cat"  checked (change)="onItemChange($event)" value="Dog" />Dog</label>
<label class="radio-inline">
<input class="form-check-input" type="radio" [(ngModel)]="cat" name="cat"   (change)="onItemChange($event)" value="Cat"  />Cat</label>

https://stackblitz.com/edit/angular-jpo2dm?embed=1&file=src/app/app.component.html


0

Ecco del codice che uso che funziona con Angular 7

(Nota: in passato a volte ho utilizzato le informazioni fornite dalla risposta di Anthony Brenelière, che apprezzo. Ma, almeno per Angular 7, questa parte:

 [checked]="model.options==2"

Ho scoperto che non è necessario.)

La mia soluzione qui ha tre vantaggi:

  1. Coerentemente con le soluzioni più comunemente consigliate. Quindi è buono per nuovi progetti.
  2. Inoltre, consente al codice del pulsante di opzione di essere simile al codice Flex / ActionScript. Questo è personalmente importante perché sto traducendo il codice Flex in Angular. Come il codice Flex / ActionScript, consente al codice di lavorare su un oggetto pulsante di opzione per selezionare o deselezionare o scoprire se un pulsante di opzione è selezionato.
  3. A differenza della maggior parte delle soluzioni che vedrai, è molto basato sugli oggetti. Un vantaggio è l'organizzazione: raggruppa i campi di associazione dati di un pulsante di opzione, come selezionato, abilitato, visibile e possibilmente altri.

HTML di esempio:

       <input type="radio" id="byAllRadioButton"
                 name="findByRadioButtonGroup"
                 [(ngModel)]="findByRadioButtonGroup.dataBindingValue"
                 [value]="byAllRadioButton.MY_DATA_BINDING_VALUE">         

      <input type="radio" id="byNameRadioButton"
                 name="findByRadioButtonGroup" 
                 [(ngModel)]="findByRadioButtonGroup.dataBindingValue"
                 [value]="byNameRadioButton.MY_DATA_BINDING_VALUE">

TypeScript di esempio:

 findByRadioButtonGroup : UIRadioButtonGroupModel
    = new UIRadioButtonGroupModel("findByRadioButtonGroup",
                                  "byAllRadioButton_value",
                                  (groupValue : any) => this.handleCriteriaRadioButtonChange(groupValue)
                                  );

  byAllRadioButton : UIRadioButtonControlModel
    = new UIRadioButtonControlModel("byAllRadioButton",
    "byAllRadioButton_value",
    this.findByRadioButtonGroup) ;

  byNameRadioButton : UIRadioButtonControlModel
    = new UIRadioButtonControlModel("byNameRadioButton",
    "byNameRadioButton_value",
    this.findByRadioButtonGroup) ;



  private handleCriteriaRadioButtonChange = (groupValue : any) : void => {

    if ( this.byAllRadioButton.selected ) {

      // Do something

    } else if ( this.byNameRadioButton.selected ) {

      // Do something

    } else {
      throw new Error("No expected radio button selected");
    }
  };

Vengono utilizzate due classi:

Classe gruppo pulsanti di opzione:

export class UIRadioButtonGroupModel {


  private _dataBindingValue : any;


  constructor(private readonly debugName : string,
              private readonly initialDataBindingValue : any = null,   // Can be null or unspecified
              private readonly notifyOfChangeHandler : Function = null       // Can be null or unspecified
  ) {

    this._dataBindingValue = initialDataBindingValue;
  }


  public get dataBindingValue() : any {

    return this._dataBindingValue;
  }


  public set dataBindingValue(val : any) {

    this._dataBindingValue = val;
    if (this.notifyOfChangeHandler != null) {
      MyAngularUtils.callLater(this.notifyOfChangeHandler, this._dataBindingValue);
    }
  }



  public unselectRadioButton(valueOfOneRadioButton : any) {

    //
    // Warning: This method probably never or almost never should be needed.
    // Setting the selected radio button to unselected probably should be avoided, since
    // the result will be that no radio button will be selected.  That is
    // typically not how radio buttons work.  But we allow it here.
    // Be careful in its use.
    //

    if (valueOfOneRadioButton == this._dataBindingValue) {
      console.warn("Setting radio button group value to null");
      this.dataBindingValue = null;
    }
  }

};

Classe pulsante di opzione

export class UIRadioButtonControlModel {


  public enabled : boolean = true;
  public visible : boolean = true;


  constructor(public readonly debugName : string,
              public readonly MY_DATA_BINDING_VALUE : any,
              private readonly group : UIRadioButtonGroupModel,
              ) {

  }


  public get selected() : boolean {

    return (this.group.dataBindingValue == this.MY_DATA_BINDING_VALUE);
  }


  public set selected(doSelectMe : boolean) {

    if (doSelectMe) {
      this.group.dataBindingValue = this.MY_DATA_BINDING_VALUE;
    } else {
      this.group.unselectRadioButton(this.MY_DATA_BINDING_VALUE);
    }
  }

}

-1

Questa potrebbe non essere la soluzione corretta, ma questa è anche un'opzione che spero possa aiutare qualcuno.

Fino ad ora ho ottenuto il valore di radioButtons utilizzando il metodo (clic) come segue:

<input type="radio" name="options" #male (click)="onChange(male.value)">Male
<input type="radio" name="options" #female (click)="onChange(female.value)">Female

e nel file .ts ho impostato il valore della variabile predefinita al valore getter della onChangefunzione.

Ma dopo la ricerca ho trovato un buon metodo che non ho ancora provato, ma sembra che questo sia buono usando il [(ng-model)]link è qui per github qui . questo sta usando RadioControlValueAccessorper la radio e anche per la casella di controllo. ecco il # plnkr # funzionante per questo metodo qui .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.