【问题标题】:I want to create a radio button in angular 6 forms using only one input field我想只使用一个输入字段以 6 角形式创建一个单选按钮
【发布时间】:2019-01-06 12:04:29
【问题描述】:

我想只使用一个输入字段以 6 角形式创建一个单选按钮 - 这里我的问题是我的输入字段在一个从数组中提取值的 ngFor 循环内。现在我想为性别创建一个单选按钮,所以有什么建议或参考我该怎么做? 这是我的代码 -

<form [formGroup]="myGroup" (submit)="submit(myGroup.value)">
    <div class="row">
      <div class="col-sm-4" *ngFor="let info of myGroup.controls['myInfo'].controls; let i = index">

            <label for="{{labelValue[i].name}}"> {{labelValue[i].label}}
            <input type="{{labelValue[i].type}}" value="{{labelValue[i].value}}" class="{{labelValue[i].class}}" [formControl]="info">
          </label>

      </div>
    </div>

<div class="row">
  <button class="form-control btn-sub" type=”submit”>
    Submit Details
  </button>
</div>
</form>

这是我在 component.ts 文件中的数组,它从中获取值 -

public labelValue: InputType[] = [
  {name:"fname",type:"text",label:"First Name", class:"form-control",value:"Sheili"},
  //{name:"lname",type:"text",label:"Last Name", class:"form-control"},
  {name:"ctype",type:"text",label:"Customer Type", class:"form-control",value:"INDIVIDUAL"},
  {name:"dob",type:"date",label:"Date Of Birth", class:"form-control",value:"1985-11-17"},
  {name:"gender",type:"text",label:"Gender",class:"form-control",value:"Female"},
  {name:"email",type:"email", label:"E-mail", class:"form-control",value:"Sheili@gmail.com"},
];

【问题讨论】:

  • 顺便问一下有什么错误?
  • 通常对于单选按钮,我们需要两个或多个具有相同名称的输入字段,但在这里我想只使用一个输入字段创建 2 个单选按钮,因为它位于 for 循环中。如果你能建议我什么?
  • 这里有 2 种类型的表单域,输入和单选按钮,您可以在模板和 *ngif 中选择使用哪一种,输入或单选按钮。
  • 你能告诉我怎么可能因为我太困惑了。

标签: angular forms radio-button angular6 radio-group


【解决方案1】:

这里有 2 种类型的表单字段,输入和单选按钮,您可以在模板和 *ngif 中选择使用哪一种,文本或单选按钮。 例如在你的 for 循环中:

        <div *ngIf="type === 'text'" formGroupName="userData">
          <div class="form-group">
             <label for="email">Email</label>
             <input type="email" class="form-control" 
             id="email" formControlName = "email">
          </div>
        </div>
        <div  *ngIf="type === 'radio'" class="radio" *ngFor="let gender of genders">
          <label>
            <input type="radio" [value]="gender"
            formControlName = "gender">{{gender}}
          </label>
       </div>

ts 代码:

 genders=['male','female'];

【讨论】:

  • 但她已经通过 labelValue 属性从组件传递类型,她只需要有两个单选按钮[一次只能选择一个],我认为通过将对象添加到 labelValue 数组,其中同名取值不同,类型都是radio,可以实现她的场景。
  • 是的,我在那个 stackBlitz 示例中介绍了它,如果您不在任何代理服务器后面,您应该能够看到代码和结果
猜你喜欢
  • 1970-01-01
  • 2019-06-25
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
  • 2017-02-21
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
相关资源
最近更新 更多