在ngOnInit中,当我这样做时:
console.log(this.tournament.slug);
我明白了,比赛为空
此变量来自父视图:
@Input() tournament: Tournament;
锦标赛是查询的结果,因此获取该值将花费一些时间,因此ngOnInit无法正常工作。
如何避免此错误?
答案 0 :(得分:4)
如果没有立即设置它,您可能会在输入上使用setter来对父组件尝试设置它做出反应吗?
@Input()
set tournament(val) {
this._tournament = val;
console.log(this._tournament.slug);
}
答案 1 :(得分:1)
在这种情况下,您应该使用Angular的ngOnChanges()
生命周期挂钩。
类似的东西:
ngOnChanges() {
if(this.tournament) {
console.log(this.tournament.slug);
}
}
这是ngOnChanges()
钩子的基本实现,因此,如果您必须管理一个复杂的案例(例如,多个异步输入并不断更新的输入,并且需要控制每个输入),请转到官方文档。分别输入)。
在这种情况下,请查看此链接:https://angular.io/guide/lifecycle-hooks#onchanges
EDIT :如我在该视频中所看到的,而且看起来确实准确,当处理多个ngOnChanges()
时,首选@Input()
钩子,而当处理多个@Input()
时,首选处理一个netstat -nltp
属性。
https://youtu.be/BYwfrSlJFfY?t=711