【问题标题】:Using Radio buttons in angular2 Control Array在 angular2 控制数组中使用单选按钮
【发布时间】:2016-07-26 12:26:46
【问题描述】:

您好,我有一个控件数组,它由控件组组成,并且在模板中循环控件数组以创建单选按钮。我可以选择所有的单选按钮,即使它们属于不同的控制组并且有不同的名称......我在这里做了一个 plunker 演示 http://plnkr.co/edit/jTMZUCj5JVFazlZo7e4W?p=preview(plunker 演示处于 beta 9 中)......当我删除 [ngFormControl] 它完美地工作...... 有人可以告诉我正确的实现方法吗?

  ArrayData=['abhi','rahul'];

ArrayControl=new ControlArray([]);

constructor(fb: FormBuilder) {  

this.ArrayControl=new ControlArray([]);

for(var i=0;i<this.ArrayData.length;i++){
  let myForm = fb.group({
  'Male':  ['', Validators.required]  ,
  'Female':  ['', Validators.required]
}); 

  this.ArrayControl.push(myForm);
}

}

这就是我创建控件数组的方式...

        <div *ngFor="#control of ArrayControl.controls;#i=index">
      <input type="radio" name="{{i}}" value="male" [ngFormControl]="control.controls['Male']"> Male<br>
      <input type="radio" name="{{i}}" value="female" [ngFormControl]="control.controls['Female']"> Female<br>
      <hr>
    </div>

以这种方式我正在循环模板... 有人可以告诉我哪里做错了吗?

【问题讨论】:

  • 它需要是旧的表单模块还是新的表单模块也可以?
  • 新表单模块对我来说很好......
  • @GunterZochbauer 如果我使用新表单(RC-4)实现上述要求,它们是否可以正常工作?

标签: angular


【解决方案1】:

更新

不适用于 Angular 2 的最终版本。

原创

这可能是您正在寻找的:

@Component({
  selector: 'my-app',
  directives: [REACTIVE_FORM_DIRECTIVES],    
  template: `
<div class="ui raised segment"> 
  <h3>Select Gender</h3>
  <form [formGroup]="form">
    <div formArrayName="arr">
      <div *ngFor="let item of arrayData; let i=index">
        <div>{{item}}</div>
        <input type="radio" [formControlName]="i" value="male"> Male<br>
        <input type="radio" [formControlName]="i" value="female"> Female<br>
        <hr>
      </div>
    </div>
  </form>
  <div>data: {{form.value | json}}</div>
</div>  

  `
})
export class AppComponent { 
  arrayData=['abhi','rahul'];

  //gender = new FormControl('', [Validators.required]);
  arr = new FormArray([]);

  constructor() {  
    this.form=new FormGroup({ 'arr': this.arr });
    console.log(this.form);
    for(var i=0; i < this.arrayData.length; i++){
      this.arr.push(new FormControl('', [Validators.required]));
    } 
  }
}

Plunker example

【讨论】:

  • 绑定在哪里?添加单选按钮一直有效。使用索引 (i) 作为单选按钮属性的“名称”是一件很奇怪的事情,在哪里可以根据现有数据设置性别?您将其设置为完全无效的值并强制用户单击某些东西''
  • @RickO'Shea 从那时起引入了一个新的表单模块并写了这个答案。在此之前,单选按钮并没有得到很好的支持。我很久没有使用单选按钮了,也不知道如何使用它们。应该有其他几个答案可以证明这一点。
猜你喜欢
  • 2018-02-06
  • 2013-02-28
  • 2017-06-11
  • 1970-01-01
  • 2017-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-07
相关资源
最近更新 更多