私はリアクティブフォーム検証(モデル駆動型検証)を使用していますが、ドロップダウンの変更時にフォームオブジェクトに値を設定できません
これは私のフォームグループです
studentModel:StudenModel
AMform: FormGroup;
Name = new FormControl("", Validators.required);
Address = new FormControl("", Validators.maxLength(16));
constructor(fb: FormBuilder){
this.AMform = fb.group({
"Name": this.Code,
"Address": this.Abbrev,
});
}
onAccntChange(event: Event) {
// set the value from Class Model
//// this.studentModel
// how to set this.studentModel value to form
}
これは私のhtmlページです
<form [formGroup]="AMform" (ngSubmit)="submit()">
<select (change)="onAccntChange($event)" class="form-control" [disabled]="ddlActivity" formControlName="AccountManagerID">
<option value="0">Select</option>
<option *ngFor="let item of allStudent" value={{item.StudentID}}>
{{item.Name}}
</option>
</select>
<div class="col-sm-9">
<input type="text" class="form-control" formControlName="Name">
</div>
<div [hidden]="Name.valid || Code.pristine" class="error"> Name is required </div>
<div class="col-sm-9">
<input type="text" class="form-control" formControlName="Address">
</div>
<div [hidden]="Address.valid || Address.pristine" class="error">Address is required </div>
<button type="submit" class="btn btn-warning "><i class="fa fa-check-square"></i> Save</button>
</form>
変更時にformcontrol値を設定する必要があります
setValue
オブジェクトでFormControl
メソッドを呼び出すことで、これを実現できます。
(<FormControl> this.AMform.controls['Name']).setValue("new value");
または:
this.Name.setValue("new value");
FormGroupオブジェクトのpatchValueメソッドを使用します。
onAccntChange(event: Event) {
this.AMform.patchValue({yourControl: studentModelValue})
}
setValue
を使用して、FormControlsを指定allする必要があります。
this.AMform.setValue({'Name':'val1', 'Address':'val2'})
patchValue
を使用すると、必要なもののみを指定できます。
this.AMform.patchValue({'Name':'val1'})
ここ もう少し読むことができます。