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

在我的Angular应用程序中,我发送一个网络请求,根据用户选择的过滤器返回一些过滤数据。这是预期的工作。接收筛选器值并发出请求的函数如下所示:

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));

希望这有帮助

看起来这就是问题所在。非常感谢,亚历山大!很高兴听到这有帮助。如果答案解决了您的问题,请务必标记答案。谢谢