Je souhaite utiliser le bouton radio dans un formulaire utilisant 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/>
La valeur initiale de model.options est 1
lorsque la page est chargée, le premier bouton radio n'est pas coché et les modifications ne sont pas liées au modèle
Une idée ?
forms
radio-button
angular
Mourad Zouabi
la source
la source
Réponses:
utilisez [value] = "1" au lieu de value = "1"
Éditer:
Comme suggéré par thllbrg "Pour angular 2.1+ utiliser à la
[(ngModel)]
place de[(ng-model)]
"la source
[(ngModel)]
place de[(ng-model)]
. Relisez .value="1" [(ngModel)]="model.options"
. Mettrevalue
entre crochets ne fonctionnait pasRemarque - la liaison de bouton radio est désormais une fonctionnalité prise en charge dans RC4 et les versions ultérieures - voir cette réponse
Exemple de bouton radio utilisant RadioControlValueAccessor personnalisé similaire à CheckboxControlValueAccessor ( mis à jour avec Angular 2 rc-1 )
App.ts
template.html
radio_value_accessor.ts
Source: https://github.com/angular2-school/angular2-radio-button
Démo en direct de Plunker: http://plnkr.co/edit/aggee6An1iHfwsqGoE3q?p=preview
la source
this._renderer.setElementProperty(this._elementRef.nativeElement, 'checked', value == this._elementRef.nativeElement.value);
Ma solution de contournement manuelle, qui consiste à mettre à jour manuellement
model.options
lorsqu'un nouveau bouton radio est sélectionné:Cela Plunkerdémontre ce qui précède, ainsi que la façon d'utiliser un bouton pour changer le bouton radio sélectionné, c'est-à-dire pour prouver que la liaison de données est bidirectionnelle:
la source
get debug()
fonction qu'est-ce queget
signifie? la seconde est: y a-t-il une alternative comme cette réponse pour les cases à cocher? veuillez également fournir un code pour les cases à cocher. merci +1 pour une excellente réponse.get
est une fonctionnalité d'accesseur TypeScript . Postez une question pour les cases à cocher.Anotherdate('2015-05-18T02:30:56')
cela ne fonctionnera pas. Les setters sont appelés lorsque vous essayez d'attribuer une valeur à une propriété. Dans mon plunker, j'ai créé unesetDate()
fonction pour que \ hat accepte une nouvelle valeur de date, qui l'assigne ensuiteAnotherdate
. Cette affectation appellera automatiquement le passeur.{{}}
liaisons sont réévaluées à chaque cycle de détection de changement. J'ai implémenténgDoCheck()
dans l'AppComponent dans le plunker pour compter les cycles de détection de changement. À partir de là, nous voyons que la détection des changements est appelée 3 fois. En mode développement, les liaisons sont vérifiées deux fois , d'où les 6 fois.Voici la meilleure façon d'utiliser les boutons radio dans Angular2. Il n'est pas nécessaire d'utiliser l'événement (click) ou un RadioControlValueAccessor pour modifier la valeur de la propriété liée, la définition de la propriété [cochée] fait l'affaire.
J'ai publié un exemple d'utilisation de boutons radio: Angular 2: comment créer des boutons radio à partir d'énumération et ajouter une liaison bidirectionnelle? Cela fonctionne à partir d'au moins Angular 2 RC5.
la source
Ce problème est résolu dans la version Angular 2.0.0-rc.4, respectivement dans les formulaires.
Inclure
"@angular/forms": "0.2.0"
dans package.json.Ensuite, étendez votre bootstrap dans main. Partie pertinente:
J'ai ceci en .html et fonctionne parfaitement: value: {{buildTool}}
la source
disableDeprecatedForms
etprovideForms
semble magique et n'a aucun sens. Que font ces choses? Il s'agit d'un code illisible redondant qui rend des choses imprévisibles d'une échelle inconnue.Je cherchais la bonne méthode pour gérer ces boutons radio, voici un exemple de solution que j'ai trouvée ici:
Notez le onSelectionChange qui passe l'élément actuel à la méthode.
la source
L'entrée radio ne semble pas encore prise en charge. Il devrait y avoir un accesseur de valeur d'entrée radio (similaire à la case de l'une , où il fixe « checked » attr ici ) mais je ne trouve pas. Alors j'en ai implémenté un; vous pouvez le vérifier ici .
la source
[value] = "item" utilisant * ngFor fonctionne également avec les formes réactives dans Angular 2 et 4
la source
Ce qui suit a résolu mon problème, pensez à ajouter une entrée radio à l'intérieur de la
form
balise et utilisez la[value]
balise pour afficher la valeur.la source
Voici une solution qui fonctionne pour moi. Cela implique une liaison de bouton radio - mais pas de liaison aux données commerciales, mais plutôt une liaison à l'état du bouton radio. Ce n'est probablement PAS la meilleure solution pour les nouveaux projets, mais convient à mon projet. Mon projet contient une tonne de code existant écrit dans une technologie différente que je porte sur Angular. L'ancien code suit un modèle dans lequel le code est très intéressé à examiner chaque bouton radio pour voir s'il s'agit de celui sélectionné. La solution est une variante des solutions de gestion des clics, dont certaines ont déjà été mentionnées sur Stack Overflow. La valeur ajoutée de cette solution peut être:
Cette solution implique
Exemple:
...
...
Lorsque l'utilisateur clique sur un bouton radio, la méthode selectButton de la classe d'assistance est appelée. Il est passé le modèle pour le bouton radio qui a été cliqué. La classe d'assistance définit le champ booléen "selected" du modèle transmis sur true et définit le champ "selected" de tous les autres modèles de boutons radio sur false.
Lors de l'initialisation, le composant doit construire une instance de la classe d'assistance avec une liste de tous les modèles de boutons radio du groupe. Dans l'exemple, "radioButtonGroupList" serait une instance de la classe d'assistance dont le code est:
la source
Exemple de liste de radio angulaire 8:
Lien source
Réponse JSON
Modèle HTML
la source
Solution et solution de contournement les plus simples:
la source
J'ai créé une version en utilisant juste un événement de clic sur les éléments chargés et en passant la valeur de la sélection dans la fonction "getSelection" et en mettant à jour le modèle.
Dans votre modèle:
Ta classe:
Voir exemple: https://plnkr.co/edit/2Muje8yvWZVL9OXqG0pW?p=info
la source
Même si cette réponse n'est peut-être pas la meilleure en fonction de votre cas d'utilisation, cela fonctionne. Au lieu d'utiliser le bouton radio pour une sélection masculine et féminine, utiliser
<select> </select>
parfaitement les œuvres, à la fois pour l'enregistrement et l'édition.Ce qui précède devrait très bien faire l'affaire, pour l'édition à l'aide de FormGroup avec
patchValue
. Pour créer, vous pouvez utiliser à la[(ngModel)]
place du fichierformControlName
. Fonctionne encore.Les travaux de plomberie impliqués avec le bouton radio un, j'ai choisi d'aller avec le sélectionner à la place. Visuellement et en termes d'UX, cela ne semble pas être le meilleur, mais du point de vue d'un développeur, c'est beaucoup plus facile.
la source
Lors du changement de bouton radio, obtenez la valeur des boutons respectifs avec ces lignes
https://stackblitz.com/edit/angular-jpo2dm?embed=1&file=src/app/app.component.html
la source
Voici un code que j'utilise qui fonctionne avec Angular 7
(Note: Dans le passé, j'utilisais parfois les informations fournies par la réponse d'Anthony Brenelière, ce que j'apprécie. Mais, au moins pour Angular 7, cette partie:
J'ai trouvé que c'était inutile.)
Ma solution ici présente trois avantages:
Exemple HTML:
Exemple de TypeScript:
Deux classes sont utilisées:
Classe de groupe de boutons radio:
Classe de bouton radio
la source
Ce n'est peut-être pas la bonne solution, mais celle-ci est également une option, espérons qu'elle aidera quelqu'un.
Jusqu'à présent, j'avais obtenu la valeur de radioButtons en utilisant la méthode (clic) comme suit:
et dans le fichier .ts, j'ai défini la valeur de la variable prédéfinie sur la valeur de lecture de la
onChange
fonction.Mais après avoir cherché, j'ai trouvé une bonne méthode que je n'ai pas encore essayée, mais il semble que celle-ci soit bonne en utilisant le
[(ng-model)]
lien est ici pour github ici . ceci est utiliséRadioControlValueAccessor
pour la radio ainsi que la case à cocher aussi. voici le # plnkr # de travail pour cette méthode ici .la source