首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >离子生命周期不点火

离子生命周期不点火
EN

Stack Overflow用户
提问于 2016-11-12 04:32:16
回答 2查看 567关注 0票数 3

我有一个Ionic 2应用程序,它运行得非常好。我把离子型应用程序从rc-0升级到了rc-2。从那以后,我面临着一个关于离子生命周期事件ionViewDidLoad的问题。我有一份注册表格。

代码语言:javascript
复制
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页面上,

代码语言:javascript
复制
  <form [formGroup]="form" (ngSubmit)="signup()">

但是当页面加载时,我会在我的web控制台中得到一个异常。

代码语言:javascript
复制
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之前就已经开始工作了,大多数在线示例只提到了上面的方法。现在发生了什么,什么改变了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-17 12:05:56

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

ionViewDidLoad,意味着所有的东西都已经加载了!包括孩子。因此,如果您的模板使用的项目和它未定义。

我们可以使用新的ionViewWillLoad

代码语言:javascript
复制
ionViewWillLoad() {
    this.form = this.formBuilder.group();
}
票数 1
EN

Stack Overflow用户

发布于 2016-11-17 11:41:19

错误是告诉你到底出了什么问题。在编译/呈现视图时,Angular需要一个formGroup实例才能存在。虽然在编译/呈现视图之后调用了ionViewDidLoad,但是不会调用ionViewDidLoad,因为模板中出现了一个错误。要说清楚:

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40559599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档