Angular 6-修改拦截器中的响应主体不起作用

Ste*_*ann 1 angular

我在使用修改响应正文时遇到问题HttpInterceptor。这是我的代码:

    return next.handle(modifiedReq).pipe(tap((event: HttpEvent<any>) => {
        if (event instanceof HttpResponse) {
            return event.clone({ body: this.modifyBody(event.body) });
        }
        return event;
    }, error => {
        this.modifyError(error);
        return of(error);
    }));

    private modifyBody(body: any) {
        //modify body here and return it
    }
Run Code Online (Sandbox Code Playgroud)

拦截器正在被调用,但是不幸的是,事件主体在被修改后仍然是相同的。在return event;事件对象有我的修饰身材,但是当我与调试一步向前跳,我可以看到该事件是起源之一,也是我的服务是不工作的原因预期的修饰身材的来历之一。

我只是试图通过更改主体来修改事件,如下所示:

event.body = this.modifyBody(event.body);
Run Code Online (Sandbox Code Playgroud)

这实际上是可行的,但是我在有角度的CLI中出现了错误,因为body-property是一个常数,而且在正式的uguglar教程中,它们总是像我的情况那样进行克隆。

那么,有没有人遇到类似的问题,或者可以给我任何建议如何继续进行下去?

小智 5

只需尝试map运算符而不是tap

https://www.learnrxjs.io/operators/utility/do.html 点击不会修改结果