单选按钮不能使用 formControl 正确切换

Radio buttons don't toggle correctly with a formControl

我有一个用 FormBuilder 构建的表单,我在上面定义了两个元素(a 和 b)。

constructor (
  private fb: FormBuilder
) {
  this.form = fb.group({
    a: '',
    b: ''
  });
}

在模板上,我有四个单选按钮,如下所示。

我需要在一列中在它们之间切换,例如在 a1 和 b1(a2 和 b2)之间切换以获得像 a = 1 或 b = 2 这样的值。

但是在输入 [formControl] 时它无法正常工作。

我该如何解决?

<div>
  <input id='a1' type='radio' name='first-column' value='1' [formControl]="form.controls['a']" >
  <label for='a1'>a1</label>

  <input id='a2' type='radio' name='second-column' value='2' [formControl]="form.controls['a']" >
  <label for='a2'>a2</label>
</div>

<div>
  <input id='b1' type='radio' name='first-column' value='1' [formControl]="form.controls['b']">
  <label for='b1'>b1</label>

  <input id='b2' type='radio' name='second-column' value='2' [formControl]="form.controls['b']">
  <label for='b2'>b2</label>
</div>

Plunker Link

为此你必须给它们不同的值和相同的名称(对于 a1 和 a2,b1 和 b2)所以现在你的模板就像

 template: `
    <div>
      <input id='a1' type='radio' name='first-column' value='1' [formControl]="form.controls['a']" >
      <label for='a1'>a1</label>

      <input id='a2' type='radio' name='second-column' value='2' [formControl]="form.controls['a']" >
      <label for='a2'>a2</label>
    </div>

    <div>
      <input id='b2' type='radio' name='first-column' value='3' [formControl]="form.controls['b']">
      <label for='b2'>b1</label>

      <input id='b2' type='radio' name='second-column' value='4' [formControl]="form.controls['b']">
      <label for='b2'>b2</label>
    </div>

`

希望对你有所帮助。

勾选Updated Plank

更新了 Plunker 以检查值

https://plnkr.co/edit/DH3BxanfGTTtaaFnmzFs?p=preview

对模板进行了如下更改 a1

  <input id='a2' type='radio'   name = "b" value='2' [formControl]="form.controls['a']" >
  <label for='a2'>a2</label>
</div>

<div>
  <input id='b1' type='radio'  name = "a" value='3' [formControl]="form.controls['b']" >
  <label for='b2'>b1</label>

  <input id='b2' type='radio'  name = "b" value='4' [formControl]="form.controls['b']" >
  <label for='b2'>b2</label>
</div>
 <button type="submit" [disabled]="form.invalid">Submit</button>

{{form.value|json}}