角度订阅中的方法调用超出了组件属性的范围

时间:2018-11-09 22:55:21

标签: angular typescript angular6

我有一个在组件的各个位置都被调用的方法,如下所示:

this.updateResults();

此方法依赖于组件的几个属性。该方法在我从模板调用的方法中可以正常工作,但是我希望在更改queryParams之后它可以工作,所以我使用以下代码:

  ngOnInit() {
    this.navigationSubscription = this._router.events.subscribe((e: any) => {
      if (e instanceof NavigationEnd) {
        this.updateResults();
      }
    });
  }

该方法在预期的时间执行,但我在调试器中看到执行时所需的属性为null。

在调试器中,组件显示为_this,而不是this。所以这就是为什么this.propertyName无法正常工作的原因。

似乎在调用该组件时超出范围。如何将此方法调用绑定到组件的作用域?

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

ngOnInit() {
    const _this = this;
    this.navigationSubscription = this._router.events.subscribe((e: any) => {
        if (e instanceof NavigationEnd) {
            _this.updateResults();
        }
    });
}

我不确定范围是否真的是您的问题,但是这种方法有时已经为我省了。