【发布时间】:2018-08-16 15:37:31
【问题描述】:
自从我使用 Ionic Framework (ionic-angular 3.9.2 latest) 构建渐进式 Web 应用程序以来已经有几个月了。同时,我一直想知道ngOnInit 和ionViewWillLoad 之间的区别。
如果我没记错的话,我相信ngOnInit 是一个Angular lifecycle hook,它会初始化指令和组件。 (设置指令/组件的输入属性。)
ionViewWillLoad 是一个Ionic navigation lifecycle event,它似乎在ionViewDidLoad (一切都已加载) 事件被触发之前被执行。看起来ionViewWillLoad事件还没有添加到NavController,文档也没有更新。
据我所知,构造函数是由 JavaScript 引擎调用的,应该避免将它用于复杂的初始化。 (details: why you should avoid complex constructor logic)
出于这个原因,我使用ionViewWillLoad 在 Ionic 设置输入属性后设置组件。
我不知道为什么,但ionViewWillLoad 是唯一一个没有出现任何错误的事件。
export class UsernamePage {
usernameControl: FormControl;
constructor(private userService: UserServiceProvider){ }
// No errors
ionViewWillLoad() { this.createUsernameForm(); }
// Errors
ionViewWillEnter() { this.createUsernameForm(); }
ionViewDidEnter() { this.createUsernameForm(); }
ionViewDidLoad() { this.createUsernameForm(); }
createUsernameForm() {
this.usernameControl = new FormControl('',
{
validators: [Validators.required, Validators.minLength(4)],
asyncValidators: CustomValidator.username(this.userService)
});
}
}
我应该坚持使用ionViewWillLoad吗?还是实现OnInit接口更好?有什么区别?
【问题讨论】:
标签: angular typescript ionic-framework