我有一个表单模型,其中有些指标表示为复选框。目前,他们在表单对象json中将其值建模为true/false。我想让它们的值从一个布尔值转换成一个数字,分别是1/0。有什么聪明的办法吗?
示例代码:

@Component

template: `
     <form [formGroup]="myForm" (ngSubmit)="save(myForm.value)">
         <input type="checkbox" id="myToggle" formControlName="myToggle"/>
     </form>
`
export class MyComponent implementes OnInit{
private myForm:FormGroup;
myToggle: number;

constructor(private _fb:FormBuilder) {}

ngOnInit() {
    this.myForm = this._fb.group({
      myToggle: [0]
    });
}

希望上面的例子表明我正在尝试将“myToggle”的类型设置为一个数字。初始化表单将默认值设置为0,并正确地取消选中复选框。但是,将复选框更新为选中会将表单值设置为true而不是1。我想把它更新到1。通过this question我看到有一些选项可以将布尔值转换为数字。但是,我不确定如何用反应式表单模型实现这一点。

最佳答案

FormControl具有registerOnChange方法,该方法允许您指定每次更改后执行的回调。
举个例子,你可以访问controllet ctrl = this.myForm.controls["myToggle"](我更喜欢手动创建),然后你可以做类似的事情。

09-13 11:39