我在Angular 4中使用了很多http请求。
现在,我将升级到Angular 6,并使用HttpClient进行完全响应。
我将尝试在HttpInterceptor中执行{observe: 'response'}参数
我的代码如下
import { Injectable } from '@angular/core';
import {
HttpRequest,
HttpHandler,
HttpEvent,
HttpInterceptor
} from '@angular/common/http';
import { AuthService } from './auth/auth.service';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class TokenInterceptor implements HttpInterceptor {
constructor(public auth: AuthService) {}
intercept(request: HttpRequest<any>, next: HttpHandler):
Observable<HttpEvent<any>> {
request = request.clone({
setParams: { observe: 'response' },
setHeaders: {
Authorization: `Bearer ${this.auth.getToken()}`
}
});
return next.handle(request);
}
}但是它不起作用。
当然,它工作得很好。
return this.httpClient.get(url, { observe: 'response' });我已经发现我的问题非常相似(链接:Is there a way to inject observe: 'response' from HttpInterceptor in Angular 6? )
可悲的是,他似乎独自找到了答案。我问你这是不是真的不可能。
发布于 2019-02-19 20:08:15
这取决于你想要做什么;我之前也没有观察到响应,但我关注的是标题,并成功地使用了以下内容:
打字脚本
const httpOptions = {
observe:'response',
};
this.httpClient.post(url, data, httpOptions) // this errors on typeerror (so comment out the 'observe')
.subscribe(resp => {
console.log('resp',(resp as any).headers.get('Location')) // we still actually have access to it
})https://stackoverflow.com/questions/54765733
复制相似问题