2016-07-05 6 views
3

kein Sourcecode an dieser Stelle, zögern Sie nicht, diese Frage zu beantworten, ich bin nur etwas müde von diesem schmerzhaften (aber notwendigen) kontinuierlichen Abschwächungsmodus in eckigen 2 Entwicklung.eckig 2: TypeError: this.form.updateValueAndValidity ist keine Funktion

Also habe ich auf rc.4 aktualisiert und versuche, die neue Forms-API zu verwenden. Dies ist, was ich bekomme:

„Typeerror: this.form.updateValueAndValidity ist keine Funktion“

Hat die oben genannte Fehlermeldung niemanden etwas bedeuten?

Dank

EDIT: Ok, Quelltext schließlich: Die Ausnahme in der Datei "form_group_directive.js" im Winkel stammt:

FormGroupDirective.prototype.ngOnChanges = function (changes) { 
    this._checkFormPresent(); 
    if (collection_1.StringMapWrapper.contains(changes, 'form')) { 
     var sync = shared_1.composeValidators(this._validators); 
     this.form.validator = validators_1.Validators.compose([this.form.validator, sync]); 
     var async = shared_1.composeAsyncValidators(this._asyncValidators); 
     console.log('from within angular:---------------------------------------------------------------------------------------------------'); 
     console.log(this.form); 
     this.form.asyncValidator = validators_1.Validators.composeAsync([this.form.asyncValidator, async]); 
     this.form.updateValueAndValidity({ onlySelf: true, emitEvent: false }); 
    } 

die Ausgabe der console.log-Anweisung eine "FormGroupDirective", die gerade keine Methode namens "updateValueAndValidity"

+0

Verwenden Sie immer noch die 'FormBuilder' Klasse oder die' FormGroup' nur? –

+0

Ich benutze immer noch den FormBuilder, und ich habe die [FormGroup] = "myUserForm" auf dem Formular-Tag festgelegt. Ist der FormBuilder auch veraltet? –

+0

Nein, die 'FormBuilder' Klasse ist nicht veraltet. Ich denke, das liegt daran, dass Sie Vorlagen- und modellgetriebene Ansätze kombinieren, um Ihre Formulare zu erstellen. Ich habe eine Antwort hinzugefügt ... –

Antwort

10

Ich glaube nicht, dass Sie gleichzeitig die Vorlage-getriebene Ansatz und die Modell-getriebene verwenden können.

So würde ich entweder die Verwendung folgende:

<form *ngIf="showForm" #userForm="ngForm" 
    (ngSubmit)="userFormSubmit()"> 
</form> 

oder:

<form *ngIf="showForm" [formGroup]="userForm" 
    (ngSubmit)="userFormSubmit()"> 
</form> 

wo userForm mit FormBuilder oder FormControl in Ihrer Komponentenklasse definiert ist. Ich denke, dass dieser Ansatz das ist, was Sie brauchen ...

+1

Ich musste # userForm = "ngForm" entfernen und dann hat alles funktioniert –

Verwandte Themen