[英]Http Interceptor Angular 4
我的使用Angular 4框架的Typescript文件出現錯誤。 intelliJ IDE無法識別HttpRequest的任何數據類型。
這是代碼:
import {Component, Injectable, OnInit} from '@angular/core';
import 'rxjs/add/operator/map';
import 'rxjs/add/observable/of';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import {ActivatedRoute, Router} from "@angular/router";
import {
HttpClient, HttpErrorResponse, HttpEvent, HttpHandler, HttpHeaders, HttpRequest,
HttpResponse, HttpInterceptor, HttpEventType} from "@angular/common/http";
import * as $ from "jquery";
@Injectable()
export class Service {
public getNames() {
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (request.responseType == 'json') {
request = request.clone({ responseType: 'text' });
return next.handle(req).map(response => {
if (response instanceof HttpResponse) {
response = response.clone<any>({ body: JSON.parse(response.body) });
}
return response;
});
}
}
從以下GitHub網站獲取: https : //github.com/angular/angular/issues/18396#issuecomment-349403045
我檢查過我要導入“ @ angular / common / http”,並且我的Typescript版本是最新的(我的版本為2.6.2)。
有誰知道如何解決這一問題? 任何建議將不勝感激。
謝謝。
使用攔截器的正確方法是:
import {
Injectable,
} from '@angular/core';
import {
HttpRequest,
HttpHandler,
HttpEvent,
HttpInterceptor
} from '@angular/common/http';
import {
Observable
} from 'rxjs/Observable';
@Injectable()
export class MyInterceptor implements HttpInterceptor {
constructor() {
}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (request.responseType == 'json') {
request = request.clone({ responseType: 'text' });
}
return next.handle(request).map(// your code here)
}
}
找到您的代碼中的差異。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.