2

チェックボックスとして表されるいくつかのインジケーターを持つフォーム モデルがあります。現在、それらの値はフォーム オブジェクト 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 に設定され、チェックボックスが正しくオフのままになります。ただし、チェックボックスをチェック済みに更新すると、フォームの値が 1 ではなく true に設定されます。1 に更新したいです。この質問を介して、ブール値を数値に変換するためのいくつかのオプションがあることがわかります。ただし、これをリアクティブフォームモデルで実装する方法が正確にはわかりません。

4

1 に答える 1

1

FormControlhasregisterOnChangeメソッドを使用すると、すべての変更後に実行されるコールバックを指定できます。

あなたの例があれば、コントロールにアクセスできますlet ctrl = this.myForm.controls["myToggle"](これを手動で作成することをお勧めします)ctrl.registerOnChange(() => ctrl.patchValue(ctrl.value ? 1 : 0));

于 2016-11-18T01:45:01.150 に答える