如何为 RadioButton 赋值

Posted

技术标签:

【中文标题】如何为 RadioButton 赋值【英文标题】:How to assign value to RadioButton 【发布时间】:2018-01-18 06:51:17 【问题描述】:

这里我有像 1 或 2 一样的数据生成器,当我点击链接按钮时,它在文本框中完美显示 1 或 2,但是当我将其更改为单选按钮时,为什么它不显示..

文本框代码

 <input type="text" [(ngModel)]="Gen" formControlName="Gen" value="1" name="Gen" />

单选按钮

 <form class="form-horizontal" novalidate [formGroup]="EmployeeForm">

 <div class="form-group" [ngClass]="'has-error':(EmployeeForm.get('Gen').touched||
                 EmployeeForm.get('Gen').dirty)&&
                 !EmployeeForm.get('Gen').valid">
     <input  type="radio" [(ngModel)]="Gen" formControlName="Gen" value="1" name="Gen" />Male
                    <input type="radio" [(ngModel)]="Gen" formControlName="Gen" value="2" name="Gen" />FE-Mal

【问题讨论】:

ngModel 用于模板驱动的表单。 formControlName 用于反应形式。您不应该将两者合二为一。 Hai Deborahk 我从你的 Angulr2 tutoriall 复制了这段代码来自复数网站 Coud u plz give any hint 我在下面添加了一个答案,因为我无法格式化评论中的文本。 @DEborahk 能否请您参考我的更新问题 【参考方案1】:

尝试不使用 formControlName:

 <input  type="radio" [(ngModel)]="Gen" value="1" name="Gen" />Male
 <input type="radio" [(ngModel)]="Gen" value="2" name="Gen" />FE-Mal

 Gen

检查此以了解原因:https://github.com/angular/angular/pull/10314#issuecomment-242218563

【讨论】:

我遇到此错误无法绑定到“ngModel”,因为它不是“输入”的已知属性。 ("ontrolName="Gen" value="1" name="Gen" />男--> 确保在 app.module.ts 文件中导入 FormsModule,并确保将其添加到 imports[] 数组中。【参考方案2】:

我的“Angular Reactive Forms”课程中的代码显示了两种方式:

使用响应式表单:

  <div class="form-group" >
      <label class="col-md-2 control-label">Send Notifications</label>
      <div class="col-md-8">
              <label class="radio-inline">
                  <input type="radio" 
                         value="email" 
                         formControlName = "notification">Email
              </label>
              <label class="radio-inline">
                  <input type="radio" 
                         value="text" 
                         formControlName = "notification">Text
              </label>
      </div>
  </div>

注意这里没有ngModel 双向绑定。

使用模板驱动的表单:

<div class="form-group" >
    <label class="col-md-2 control-label">Address Type</label>
    <div class="col-md-8">
            <label class="radio-inline">
                <input type="radio" id="addressType1Id" value="home"
                        [(ngModel)]="customer.addressType"
                        name="addressType">Home
            </label>
            <label class="radio-inline">
                <input type="radio" id="addressType1Id" value="work"
                        [(ngModel)]="customer.addressType"
                        name="addressType">Work
            </label>
            <label class="radio-inline">
                <input type="radio" id="addressType1Id" value="other"
                        [(ngModel)]="customer.addressType"
                        name="addressType">Other
            </label>
    </div>
</div>

注意这里没有使用formControlName

【讨论】:

非常感谢您的 Greate Ans【参考方案3】:

这里有两种方法可以解决这个问题。

模板驱动的方法

app.component.html

<form [formGroup]="signupForm" (ngSubmit)="onSubmitForm()">


  <div class="radio" *ngFor="let gender of genders">
    <label>
        <input 
            type="radio" 
            name="gender" 
            id="gender" 
            [value]="gender" 
            ngModel 
            required>
         gender  
    </label>
  </div>

app.component.ts

export class AppComponent 
    genders = ['male', 'female']; 


反应式方法

app.component.html

  <form [formGroup]="signupForm" (ngSubmit)="onSubmitForm()">
    <div class="radio" *ngFor="let gender of genders">
      <label>
        <input
          type="radio"
          formControlName="gender"
          [value]="gender"> gender 
      </label>
    </div>
    <button class="btn btn-primary" type="submit">Submit</button>
  </form>

app.component.ts

export class AppComponent implements OnInit 
  genders = ['male', 'female'];
  signupForm: FormGroup;

 ngOnInit() 
    this.signupForm = new FormGroup(
      'username': new FormControl(null, Validators.required),
    );
  

  onSubmitForm() 
    console.log(this.signupForm)
  

【讨论】:

太棒了,真的很不错

以上是关于如何为 RadioButton 赋值的主要内容,如果未能解决你的问题,请参考以下文章

如何为每个 RadioButton 设置单独的颜色?

如何为 ListView 控件中的第一个 WPF RadioButton 设置 XAML,以便默认检查?

RadioGroup 调用 onCheckChanged() 三次

怎么样获取动态生成的radiobutton的值

如何为单选按钮分配一个值并稍后在 Android 中检索该值?

Tkinter:如何设置 ttk.Radiobutton 激活并获取其值?