2016-10-17 13 views
5

Ben kullanılan Reaktif formu Doğrulama (Model güdümlü onaylama) Açılan değişikliği nesneyi oluşturmak için değeri koyamazsınızaçısal 2 daktilo FormBuilder nesnesine değerini nasıl ayarlanır

Bu benim Formgroup

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 
}  
olduğunu

Bu değişim On My html sayfası

<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> 

i gerekir Sen achievie edebilirsiniz formcontrol değerini

cevap

10

set senin FormControl nesne üzerinde setValue yöntemini çağırarak:

(<FormControl> this.AMform.controls['Name']).setValue("new value"); 

veya: En FormGroup nesnenin

this.Name.setValue("new value"); 
+1

Teşekkürler .. – coder

+1

bunu yapabiliriz bu bir – coder

+0

Name = new FormControl ({value: '', disabled: true}, [Validators.required, Validators.maxLength (10)]); üzerinde değişiklik yapmayı reddedebilirim bana çözüm önerebilirsin ... – coder

3

Kullanım patchValue yöntemi.

this.AMform.setValue({'Name':'val1'}) 

Here biraz okuyabilir: İhtiyacınız sadece birini belirtebilirsiniz patchValue kullanma

this.AMform.setValue({'Name':'val1', 'Address':'val2'}) 

:

onAccntChange(event: Event) { 
    this.AMform.patchValue({yourControl: studentModelValue}) 
    } 
+0

Teşekkürler, bu iyi bir çözüm ... :) – coder

0

setValue kullanarak tüm FormControls belirtmeniz gerekir Biraz daha.