ngOnInit中未设置的变量

时间:2019-01-04 09:57:04

标签: angular

在ngOnInit中,当我这样做时:

console.log(this.tournament.slug);

我明白了,比赛为空

此变量来自父视图:

@Input() tournament: Tournament;

锦标赛是查询的结果,因此获取该值将花费一些时间,因此ngOnInit无法正常工作。

如何避免此错误?

2 个答案:

答案 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