2016-11-12 15 views
3

私はIonic 2アプリを完璧に正常に動作させています。イオンアプリをrc-0からrc-2に更新しました。その後、私はイオンライフサイクルイベントionViewDidLoadの問題に直面しています。私はサインアップフォームを持っています。イオンライフサイクルが発射しない

import {Validators, FormBuilder, FormGroup , AbstractControl } from '@angular/forms'; 
export class Signup { 
    form: FormGroup; 
    constructor( formBuilder: FormBuilder) { } 
    ionViewDidLoad() { 
    this.form = this.formBuilder.group({ 
     name: ['', Validators.required], 
     email: ['', CustomValidator.emailValidator], 
     password: ['', Validators.compose([Validators.minLength(8),Validators.required])], 
     password_confirmation: ['', Validators.compose([Validators.minLength(8),Validators.required])] 
    } } 
} 

そして、私が持っている私のhtmlページ、

<form [formGroup]="form" (ngSubmit)="signup()"> 

しかし、ページのロード中に、私は私のウェブコンソールで例外を取得

EXCEPTION: Error in ./Signup class Signup - inline template:9:8 caused by: formGroup expects a FormGroup instance. Please pass one in. 

私はform変数であると考えていますhtmlがロードされる前に定義されていません。私はngOnInitを試して、それは正常に動作します。私がIonicを更新する前にionViewDidLoadが働いていて、ほとんどの例で上記の方法のみが言及されています。何が起こったのか、何が変わったのか?

+0

を使用することができます。それが私が初期化している場所です。 – JoeriShoeby

+0

ngOnInitを使って動作させることができます。しかし、ionViewDidLoadがなぜ機能しなかったのかは分かりませんでした。コンストラクタに物事を追加することを避ける方が良いでしょう。 – raj

+0

あなたは私の提案を試しましたか?フォームが作成される前にビューがレンダリングされるように見える問題。 – JoeriShoeby

答えて

1

RC2に大きな変化がありました。新しい変更ごとに、

ionViewDidLoadは、すべてが既に読み込まれていることを意味します。子供を含む あなたがテンプレートを使ってアイテムを定義していれば、それは未定義です。

私たちはあなたのコンストラクタで、フォームの初期化を試してみてください新ionViewWillLoad

ionViewWillLoad() { 
    this.form = this.formBuilder.group(); 
} 
+0

あなたの回答が既にあるようです; – JoeriShoeby

+0

どこですか?これらのドキュメントはまだ更新されていません。この問題からそれを得ました。 https://github.com/driftyco/ionic/issues/8449 – raj

0

エラーは、何がうまくいかないかを正確に伝えています。ビューをコンパイル/レンダリングする際、Angularでは、formGroupインスタンスがすでに存在している必要があります。ビューのコンパイル/レンダリング後にionViewDidLoad getが呼び出されても、テンプレート内にエラーが表示されたため、ionViewDidLoadは呼び出されませんでした。状況を明確にするには:

コンストラクタまたはngOnInitでフォームを定義します。それ以外の場合は、まだ作成されていないため、テンプレートはformGroupインスタンスにアクセスできません。

+0

https://ionicframework.com/docs/v2/resources/forms/ – raj

関連する問題