我有一个表单模型,其中有些指标表示为复选框。目前,他们在表单对象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"]
(我更喜欢手动创建),然后你可以做类似的事情。