如何使用Reactive表单设置单选按钮值?

Joh*_*abb 8 typescript angular2-forms angular

这是我的组件类,我尝试将表单单选按钮值设置为1:

import { FormGroup, FormControl } from '@angular/forms';

export class myComponent implements OnInit{
    pageForm: FormGroup;

    ngOnInit() {
        this.pageForm = new FormGroup({
            'gndr': new FormControl(1)
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当加载页面时,"单选按钮"未设置为"男性"且两个选项均为空白:

<div class="form-group">
    <label for="gender">Gender</label>
    <div class="radio">
        <label>
            <input type="radio" name="gndr" formControlName="gndr" value=1>Male
        </label>
    </div>
    <div class="radio">
        <label>
            <input type="radio" name="gndr" formControlName="gndr" value=0>Female
        </label>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

那么如何从我的组件类加载单选按钮值?

And*_*son 15

如果您希望手动默认选中其中一个,则可以添加"已检查"标签,例如

<div class="radio">
    <label>
        <input type="radio" name="gndr" formControlName="gndr" value=1 checked>Male
    </label>
</div>
<div class="radio">
    <label>
        <input type="radio" name="gndr" formControlName="gndr" value=0>Female
    </label>
</div>
Run Code Online (Sandbox Code Playgroud)

编辑

如果要使用字符串类型的默认值,请在FormControl中设置:

component.ts

this.pageForm = new FormGroup({
      'gndr': new FormControl('1')
    });
Run Code Online (Sandbox Code Playgroud)

component.html

...
<input type="radio" formControlName="gndr" value=1>
...
Run Code Online (Sandbox Code Playgroud)

如果要使用类型编号的默认值,请在FormControl中设置:

component.ts

this.pageForm = new FormGroup({
      'gndr': new FormControl(1)
    });
Run Code Online (Sandbox Code Playgroud)

component.html

...
<input type="radio" formControlName="gndr" [value]=1>
...
Run Code Online (Sandbox Code Playgroud)

  • 不确定你是否希望值是字符串类型,就像你在html视图中建议的那样..但是字符串类型为1和0并没有任何意义.所以如果你喜欢你可以改变模板语法从输入到`[value] = 1`和`[value] = 0`的`value = 1`和`value = 0`.确保值的类型为数字.然后它应该与您原来的''gndr'一起使用:new FormControl(1)` (2认同)