离子生命周期不开火

时间:2016-11-12 04:32:17

标签: angularjs ionic-framework

我有一个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()">

但是当页面加载时,我的Web控制台出现了异常

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

我相信在加载html之前未定义form变量。我试过了ngOnInit,它运行正常。在我更新ionViewDidLoad之前Ionic正在工作,大多数在线示例仅提及上述方法。现在发生了什么,发生了什么变化?

2 个答案:

答案 0 :(得分:1)

RC2发生了重大变化。根据新的变化,

  

ionViewDidLoad,表示所有内容都已加载!   包括儿童。因此,如果模板使用了项目并且未定义。

我们可以使用新的ionViewWillLoad

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

答案 1 :(得分:0)

错误告诉你究竟出了什么问题。在编译/渲染视图时,Angular需要一个formGroup实例已经存在。虽然在编译/渲染视图后会调用ionViewDidLoad,但不会调用ionViewDidLoad,因为模板中会出现错误。为了说清楚:

在构造函数或ngOnInit中定义表单,否则您的模板将无法访问formGroup实例,因为它尚未创建。