反応的なフォームを使用しているので、それを利用してください。反応性のある形でngModel
を使用することはお勧めしません。 ReactiveFormsModule
には、ngModel
指示文も含まれていません。
複数のチェックボックスがあるので、値をキャプチャするにはFormArray
を使用する必要があります。 FormArray objectiveOfUtilisingServiceControls
と呼ぶことができます。
次に、フォーム配列にアイテムを追加または削除する方法があります。 onChange
を
(change)="onChange(objective.value, $event.target.checked)"
:私たちは、テンプレートに変更イベントを持っている私たちは、チェックボックスのブール値を渡している、それが確認されたりいない場合は意味だけでなく、我々はフォームの配列に追加する実際のアイテム我々は、フォームの配列に新しいFormControl
を押すか、それがオフになっている場合、我々はフォームの配列からフォームコントロールを削除
onChange(value:string, isChecked: boolean) {
let objectiveOfUtilisingServiceControls =
<FormArray>this.myForm.controls.objectiveOfUtilisingServiceControls;
if(isChecked) {
objectiveOfUtilisingServiceControls.push(new FormControl(value));
} else {
let index =
objectiveOfUtilisingServiceControls.controls.findIndex(x => x.value == value)
objectiveOfUtilisingServiceControls.removeAt(index);
}
}
:メソッドは次のようになります。
事前チェックされている値があるので、最初にフォーム配列にその値を追加する必要があります。 (fb
がFormbuilder
を参照している)
ngOnInit() {
// build form
this.myForm = this.fb.group({
objectiveOfUtilisingServiceControls: this.fb.array([])
});
//iterate and check which object matches the with the value in 'userInfo.objective'
for (let obj of this.initialInformationDetails.objectiveOfUtilisingService) {
if (obj.value == this.userInfo.objective) {
this.onChange(obj.value, true)
break;
}
}
}
、テンプレートでprechecked値としては、ちょうど[checked]
を使用します:
を、私たちはこのように見ることができるフォームを、内蔵された後に我々はそれを行うことができます
<label *ngFor="let objective of initialInformationDetails.objectiveOfUtilisingService">
<input type="checkbox" (change)="onChange(objective.value, $event.target.checked)"
[checked]="userInfo.objective == objective.value"/> {{objective.value}}
</label>
フォームを送信するときは、フォームのすべての値がmyForm.value
になっています。ちょうどmyForm
を実際のフォーム名に変更してください。
この質問は、あなたがしようとしていることにかなり近いです。 https://stackoverflow.com/q/45085453/5556177 – Nehal
あなたは反応型ですか? ngModelと一緒に使用することはお勧めできません。私はformcontrolnameに疑問を抱いています。なぜなら、複数のチェックボックスが必要な場合、フォームコントロールでは機能しません。これは1つの値しか取り込めないため、formarrayが必要です。 – Alex
ちょっと、答えにどうやって行ったのですか?あなたを助けてくれましたか、さらに助けが必要でしたか? :) – Alex