当前位置: 首页 > 知识库问答 >
问题:

在类型“身份验证接收器”中具有可观察的“拦截”的 HttpInterceptor 在基类型“HttpInterceptor”中不>相同的属性

曹沛
2023-03-14

我不明白这个代码有什么问题,你能帮我吗?

import { Injectable } from '@angular/core';
import {
  HttpEvent, HttpInterceptor, HttpHandler, HttpRequest
} from '@angular/common/http';

import { Observable } from 'rxjs';
import { switchMap, map } from 'rxjs/operators';

import { AuthenticationSharedStorage } from '../storages/authentication.storage';
import { AuthenticationToken } from '../../models/authentication.model';

@Injectable()
export class AuthenticationInterceptor implements HttpInterceptor {

  constructor(private storage: AuthenticationSharedStorage) {}
  intercept(req: HttpRequest<any>, next: HttpHandler) {
    this.storage.getData()
    .pipe(
      switchMap((data:AuthenticationToken )=> {
      if(data){
        const authToken = data.token;
        const authReq = req.clone({ setHeaders: { Authorization: authToken } });
        return next.handle(authReq);
      }
      return next.handle(req);
      })
    );
  }
}

完整的错误是:

类型“AuthenticationInterceptor”中的属性“intercept”不能分配给基类型“HttpIntercepter”中的相同属性。类型“(请求:HttpRequest,下一个:HttpHandler)=

共有2个答案

太叔乐家
2023-03-14

我有同样的错误,问题是由项目和npm包之间的rxjs版本差异引起的。

我通过在项目中安装相同版本的rxjs来解决这个问题。

范麒
2023-03-14

您需要返回可观察量

intercept(req: HttpRequest<any>, next: HttpHandler) {
  return this.storage.getData()
  //...
}

 类似资料:
  • 我想使用以下代码实现文件下载: RestAPI: 服务: 组件: 当我启动angular时,我得到错误:src/app/panel/service/download中的错误。服务ts(17,91):错误TS2339:类型“Observable”上不存在属性“map”。 将导入代码的正确wya是什么?当我点击下载按钮时,什么也没发生。

  • 问题内容: 我有带有不同(HTML和JSON)结果类型的Struts2操作。他们使用通用拦截器。 如果需要拦截请求,如何根据给定的操作结果类型返回结果? 例如,我转发到JSP页面。如果操作是JSON类型,我想转发JSON错误。 问题答案: 我有带有不同(HTML和JSON)结果类型的Struts2操作。他们使用通用拦截器。如果需要拦截请求,如何根据给定的动作结果类型返回结果? 例如,我的Actio

  • 问题内容: 我们在Spring 3.0中将RestTemplate与xml配置一起使用,并且运行良好。 但是,当我们尝试迁移到Spring 3.1版本时,不建议使用CommonsClientHttpRequestFactory类,并且不再使用commons HttpClient。 我试图使用HttpComponentsClientHttpRequestFactory类和Apache HttpCli

  • 问题内容: 我有一个REST API,它返回JSON响应为: 有时它返回: 我有一个像这样的POJO: 那么,有没有一种方法(不是写你自己的其他 自定义解串器 中)Jackson2,这将有助于我映射在JSON来时,它的A型和类型时,它是一个JSON对象? 或者换句话说,在Jackson中,有没有一种方法可以按变量而不是by 映射? 问题答案: 我可以建议您像这样使用JsonNode: 或像这样 :

  • 我是个新手。目前我正在学习6个特征。当我试图处理错误时,会出现如下问题:, 未找到模块:错误:无法解析“D:\WORKSPACE\Angular5\binding\src\app”中的“rxjs/add/observable/throw” 找不到模块:错误:无法解决'D:\WORKSPACE\Angular5\绑定\src\app'中的'rxjs/add/操作员/捕获' src/app/emplo

  • 假设我有两个不同的模型和表,分别名为和。 正如你所知laravel使用模型来管理身份验证。但是因为我有两个不同的模型,我想可以分别管理它们。 我使用laravel 5.4,我不知道如何能做到这一点。