簡體   English   中英

Http攔截器Angular 4

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM