我有一个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
正在工作,大多数在线示例仅提及上述方法。现在发生了什么,发生了什么变化?
答案 0 :(得分:1)
RC2
发生了重大变化。根据新的变化,
ionViewDidLoad,表示所有内容都已加载! 包括儿童。因此,如果模板使用了项目并且未定义。
我们可以使用新的ionViewWillLoad
ionViewWillLoad() {
this.form = this.formBuilder.group();
}
答案 1 :(得分:0)
错误告诉你究竟出了什么问题。在编译/渲染视图时,Angular需要一个formGroup实例已经存在。虽然在编译/渲染视图后会调用ionViewDidLoad,但不会调用ionViewDidLoad,因为模板中会出现错误。为了说清楚:
在构造函数或ngOnInit中定义表单,否则您的模板将无法访问formGroup实例,因为它尚未创建。