【发布时间】:2016-11-12 04:32:16
【问题描述】:
我有一个运行良好的Ionic 2 应用程序。我将 ionic 应用程序从 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.
我相信在加载 html 之前没有定义 form 变量。我试过ngOnInit,效果很好。 ionViewDidLoad 在我更新 Ionic 之前一直在工作,并且大多数在线示例仅提及上述方法。现在发生了什么,发生了什么变化?
【问题讨论】:
-
尝试在构造函数中初始化表单。那就是我正在初始化它的地方。
-
我可以使用 ngOnInit 让它工作。但不确定为什么 ionViewDidLoad 不起作用。最好避免在构造函数中添加东西,即使在这里并不重要。
-
你试过我的建议了吗?问题似乎是在创建表单之前呈现了您的视图。
-
我没有尝试您的解决方案,但我相信它会起作用。正如我提到的
ngOnInit工作,所以问题是ionViewDidLoad在html加载后运行。不应该在那之前调用它吗?