Angular应用程序中的事件发射器通知后成功发送网络请求时出现问题
在我的Angular应用程序中,我发送一个网络请求,根据用户选择的过滤器返回一些过滤数据。这是预期的工作。接收筛选器值并发出请求的函数如下所示:Angular应用程序中的事件发射器通知后成功发送网络请求时出现问题,angular,typescript,angular-event-emitter,Angular,Typescript,Angular Event Emitter,在我的Angular应用程序中,我发送一个网络请求,根据用户选择的过滤器返回一些过滤数据。这是预期的工作。接收筛选器值并发出请求的函数如下所示: public onFilterReceived(values) { let languageFilter = []; let cityFilter = []; let zipFilter = []; let firstNameFilter = []; let lastNameFilter = []; t
public onFilterReceived(values)
{
let languageFilter = [];
let cityFilter = [];
let zipFilter = [];
let firstNameFilter = [];
let lastNameFilter = [];
this.route.params.subscribe(
(params: any) => {
this.page = params['page'];
this.pn_zip_e = params['pn_zip.e'];
this.pn_firstName_e = params['pn_firstName.e'];
this.pn_lastName_e = params['pn_lastName.e'];
this.pn_city_e = params['pn_city.e'];
this.pn_language_e = params['pn_language.e'];
}
);
this.pn_language_e === "1" ? languageFilter = values['language'] : languageFilter = [];
this.pn_city_e === "1" ? cityFilter = values['city'] : cityFilter = [];
this.pn_zip_e === "1" ? zipFilter = values['zip'] : zipFilter = [];
this.pn_firstName_e === "1" ? firstNameFilter = values['firstName'] : firstNameFilter = [];
this.pn_lastName_e === "1" ? lastNameFilter = values['lastName'] : lastNameFilter = [];
this.sendDebouncedRequest(this.page, this.pagesize, languageFilter, cityFilter, zipFilter, firstNameFilter, lastNameFilter);
};
现在,在应用程序上,我们还有一些用户界面,允许用户更改分支,这将过滤整个应用程序中的所有数据。因为分支更改UI位于不同的组件中,所以我使用en事件发射器通过共享服务向其他组件宣布此更改
我的目标是接收此事件的通知,然后再次发出网络请求。后端将从那里处理数据过滤
我遇到的问题是,在通过事件发射器成功接收事件通知并将对函数的引用传递给fire之后,在接收组件中如下所示:
this.branchChangeSub = this.branchInfoService.selectedBranchChange.subscribe(this.onBranchChange);
。。。当我通过此代码再次启动网络请求功能时:
public onBranchChange(values) {
console.log('announceBranchChange firing...');
if (values) {
console.log('have values...');
this.onFilterReceived(values); // Resend the network request
}
}
。。。我得到这个错误:
TypeError:无法读取未定义的属性“onFilterReceived”
这就是我困惑的地方。为什么这里未定义
onFilterReceived()
?为什么我可以在加载组件时成功启动此函数,而不是在收到分支更改通知后。这里有一点我基本上是误解的。尝试更新subscribe
中对onBranchChange()
的调用,以使用箭头函数保留此
的上下文:
this.branchChangeSub = this.branchInfoService.selectedBranchChange.subscribe(values => this.onBranchChange(values));
希望这有帮助 看起来这就是问题所在。非常感谢,亚历山大!很高兴听到这有帮助。如果答案解决了您的问题,请务必标记答案。谢谢