我有一个在组件的各个位置都被调用的方法,如下所示:
this.updateResults();
此方法依赖于组件的几个属性。该方法在我从模板调用的方法中可以正常工作,但是我希望在更改queryParams之后它可以工作,所以我使用以下代码:
ngOnInit() {
this.navigationSubscription = this._router.events.subscribe((e: any) => {
if (e instanceof NavigationEnd) {
this.updateResults();
}
});
}
该方法在预期的时间执行,但我在调试器中看到执行时所需的属性为null。
在调试器中,组件显示为_this
,而不是this
。所以这就是为什么this.propertyName
无法正常工作的原因。
似乎在调用该组件时超出范围。如何将此方法调用绑定到组件的作用域?
答案 0 :(得分:2)
您可以尝试这样的事情:
ngOnInit() {
const _this = this;
this.navigationSubscription = this._router.events.subscribe((e: any) => {
if (e instanceof NavigationEnd) {
_this.updateResults();
}
});
}
我不确定范围是否真的是您的问题,但是这种方法有时已经为我省了。