Флажок Angular 2 Reactive Forms - Bind Bool to Number
У меня есть модель формы с некоторыми показателями, которые представлены в виде флажков. В настоящее время они моделируют свое значение как true/false в форме объекта json. То, что я хотел бы, чтобы их значение было преобразовано из логического числа в число, 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. С помощью этого вопроса я вижу, что есть несколько вариантов преобразования логических значений в числа. Тем не менее, я не уверен, как именно реализовать это с моделью реактивной формы.
1 ответ
FormControl
имеет registerOnChange
метод, который позволяет указать обратный вызов, выполняемый после каждого изменения.
Имея свой пример, вы можете получить доступ к управлению let ctrl = this.myForm.controls["myToggle"]
(Я бы предпочел создать это вручную), а затем вы можете сделать что-то вроде ctrl.registerOnChange(() => ctrl.patchValue(ctrl.value ? 1 : 0));
,