私はすでにここの他の回答者の例に倣おうとしましたが、うまくいきませんでした。
リアクティブフォーム(動的)を作成し、いくつかのフィールドを任意のタイミングで無効にしたいと考えています。私のフォームのコードは
this.form = this._fb.group({
name: ['', Validators.required],
options: this._fb.array([])
});
const control = <FormArray>this.form.controls['options'];
control.push(this._fb.group({
value: ['']
}));
私のHTMLです。
<div class='row' formArrayName="options">
<div *ngFor="let opt of form.controls.options.controls; let i=index">
<div [formGroupName]="i">
<select formArrayName="value">
<option></option>
<option>{{ opt.controls.value }}</option>
</select>
</div>
</div>
</div>
簡単にできるようにコードを縮小しました。タイプselectのフィールドを無効にしたい。以下のようにしてみました。
form = new FormGroup({
first: new FormControl({value: '', disabled: true}, Validators.required),
});
うまくいきません。誰か提案がありますか?
**注目してください。
条件に変数を使用してフォームを作成し、後でその変数を変更しようとすると、動作しません、つまりフォームは変更されません。
例えば、以下のようになります。
this.isDisabled = true;
this.cardForm = this.fb.group({
'number': [{value: null, disabled: this.isDisabled},
});
で、変数を変更すると
this.isDisabled = false;
を変更してもフォームは変わりません。このような場合には
this.cardForm.get('number').disable();
ところで。
値の変更にはpatchValueメソッドを使うべきです。
this.cardForm.patchValue({
'number': '1703'
});