Флажок 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));,

Другие вопросы по тегам