2016-08-07 3 views
6

Formular wie etwas aussieht:Angualr2 Fehler: nicht gesetzt Eigenschaftswert von # <AbstractControl>, die nur einen Getter hat

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

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

    </form> 

Assoziierte Klasse:

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

     }); 
    } 

Fehler erhalten:

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

Antwort

2

Versuchen:

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

Dies ist nicht eine Antwort auf die Frage liefert. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag. - [Aus Bewertung] (/ review/low-quality-posts/13252270) –

+0

Ich wollte eine Antwort geben, keine Kritik. Nach meinem Verständnis versucht er, den Wert des Formularsteuerelements zu aktualisieren, aber "this.fname.value = newValue" ist nicht der richtige Weg, also schlug ich einen anderen Weg vor, um seine Aufgabe zu erfüllen. –

+0

Dann bitte mehr ausarbeiten. Zum Beispiel können Sie Ihren Kommentar einfach zu dieser Antwort verschieben. –

10

Ich denke, Sie sollten setValue oder patchValue Methoden von FormGroup verwenden.

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

Verwendung patchValue, wenn Sie nur bestimmte Felder selektiv aktualisieren möchten, oder setValue und aktualisieren Sie alle

Verwandte Themen