我有一个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之前就已经开始工作了,大多数在线示例只提到了上面的方法。现在发生了什么,什么改变了?
发布于 2016-11-17 12:05:56
RC2发生了巨大的变化。根据新的变化,
ionViewDidLoad,意味着所有的东西都已经加载了!包括孩子。因此,如果您的模板使用的项目和它未定义。
我们可以使用新的ionViewWillLoad
ionViewWillLoad() {
this.form = this.formBuilder.group();
}发布于 2016-11-17 11:41:19
错误是告诉你到底出了什么问题。在编译/呈现视图时,Angular需要一个formGroup实例才能存在。虽然在编译/呈现视图之后调用了ionViewDidLoad,但是不会调用ionViewDidLoad,因为模板中出现了一个错误。要说清楚:
在构造函数或ngOnInit中定义表单,否则模板将无法访问formGroup实例,因为它尚未创建。
https://stackoverflow.com/questions/40559599
复制相似问题