2016-07-05 3 views
3

この時点ではソースコードがありません。この質問をd​​ownvoteしてください。私は角度2のこの苦しい(しかし必要な)継続的非推奨モードに少し疲れています。開発。angle2:TypeError:this.form.updateValueAndValidityは関数ではありません

私はrc.4にアップグレードして、新しいforms-apiを使用しようとしています。これは私が得るものです:

「例外TypeError:this.form.updateValueAndValidityは関数ではありません」

前述のエラー・メッセージが誰に何を意味するのでしょうか?

おかげ

EDIT: [OK]を、後にすべてのソースコード: 例外は角内のファイル "form_group_directive.js" に由来する:

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 }); 
    } 

にconsole.log文の出力があります"updateValueAndValidity"というメソッドを持たない "FormGroupDirective"

+0

あなたは 'FormBuilder'クラスまたは' FormGroup'クラスだけを使用しますか? –

+0

私はまだFormBuilderを使用しており、form-tagに[formGroup] = "myUserForm"を設定しています。 FormBuilderも非推奨ですか? –

+0

'FormBuilder'クラスは非推奨ではありません。私はあなたのフォームを作成するためのテンプレートとモデル主導型のアプローチを組み合わせているからだと思います。私は答えを加えました... –

答えて

10

テンプレート駆動アプローチとモデル駆動型アプローチを同時に使用することはできません。

だから私は、次のいずれかを使用します。

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

か:

userFormFormBuilderまたは FormControlを使用してコンポーネントクラスで定義されている
<form *ngIf="showForm" [formGroup]="userForm" 
    (ngSubmit)="userFormSubmit()"> 
</form> 

。私はこのアプローチがあなたが必要とするものだと思っています...

+1

#userForm = "ngForm"を削除しなければならず、すべてが機能しました –

関連する問題