2016-08-07 13 views
6

Formu gibi görünür ancak bir alıcı olan:Angualr2 Hata: # kümesi olamaz özellik değeri <AbstractControl>

<form [ngFormModel]="myForm" (ngSubmit)="update()"> 

       <ion-label floating>First Name</ion-label> 
       <ion-input type="text" id="fname" [ngFormControl]="fname"> 

    </form> 

İlişkili sınıfı:

export class ProfilePage { 
    myForm: ControlGroup; 
    fname: AbstractControl; 

    constructor(private _profile: Profile, fb: FormBuilder) { 

     this.myForm = fb.group({ 
      'fname': ['', Validators.compose([Validators.required, Validators.minLength(2), firstCharacter])] 
     }); 

     this.fname = this.myForm.controls['fname']; 


     Promise.all([this._profile.firstname, this._profile.lastname, this._profile.base64Image]).then(values => { 
      this.fname.value = values[0]; 
     // this.lname.value = values[1]; 

     }); 
    } 

Hata aldı:

EXCEPTION: Error: Uncaught (in promise): TypeError: Cannot set property value of #<AbstractControl> which has only a getter 

cevap

2

Deneme:

(this.fname as Control).updateValue(values[0]); 
+0

Bu soruya bir cevap vermez güncellemek istiyorsanız

this.myForm.patchValue({fname: firstName}); 

kullanım patchValue. Bir yazardan eleştiri yapmak veya açıklama istemek için yazılarının altında bir yorum bırakın. - [Yorum Yaz] (/ review/düşük kaliteli yazılar/13252270) –

+0

Bir eleştiri, bir eleştiri sağlamak istedim. Anlayışımdan, form kontrolünün değerini güncellemeye çalışıyor, ancak 'this.fname.value = newValue' doğru yol değil, bu yüzden görevini başarmak için başka bir yol önerdim. –

+0

O zaman lütfen daha fazla detay verin. Örneğin, yorumunuzu bu yanıta kolayca taşıyabilirsiniz. –

10

FormGroup'un setValue veya patchValue yöntemlerini kullanmanız gerektiğini düşünüyorum. seçerek sadece belirli alanları veya SetValue güncellemek ve tüm

İlgili konular