首页 > 解决方案 > 在错误处理Angular 7 RXJS中发出http请求

问题描述

您好internal server error已经发现了错误并记录了它们。但我不知道如何在这个错误处理中调用下一个请求。如果请求失败,我需要selectElevation(elevation.id)通过调用另一个请求方法来恢复开始请求。selectPhase(this.sessionState.phaseId)selectElementPricelistConfigurator()

goToConfiguratorAndLoadData(elevation: Elevation) {
        this.apiService.selectElevation(elevation.id).pipe(
            mergeMap( () => this.apiService.selectElementPricelistConfigurator() ),
        ).subscribe(
        (next) => {
            ...
        },
        (err: Error | HttpErrorResponse) => {
            if (err instanceof HttpErrorResponse) {
                if (err.status === 500) {
                    console.log('Error', err.status);
                    this.apiService.selectPhase(this.sessionState.phaseId);
                }
            } else {
                throwError(err);
            }
        }
    );
}

服务器只是停止并且没有触发这个 http 请求。 在此处输入图像描述

感谢您的帮助,没有发现任何类似的问题。

编辑:

ApiServer - selectPhase 方法:

selectPhase(phaseId: string): Observable<any> {
    return this.httpClient.post(this.apiUrl + '/phases/select', {
        identifier: phaseId,
    });
}

标签: angularrxjs

解决方案


假如说

this.apiService.selectPhase(this.sessionState.phaseId)

返回一个 RxJS Observable,您需要订阅它才能触发请求。

引用官方文档

要调用 Observable 并查看这些值,我们需要订阅它:


推荐阅读