我正在使用Angular 17并实现了一个i18 n库,现在我需要向翻译模块发送的每个请求添加一个httpContent对象,以便我的拦截器可以确定它不必考虑此请求.

我的拦截器看起来是这样的:

    export const authInterceptor: HttpInterceptorFn = (req, next) => {
        const authSvc = inject(AuthService);
        const router = inject(Router);
    
        if (req.context.get(IS_PUBLIC_API)) {
          return next(req);
        }
        ...

我想将密钥"IS_PUBLIC_API"附加到翻译模块发送的每个请求,就像我对某些http请求所做的那样:

  private readonly CONTEXT = {context: new HttpContext().set(IS_PUBLIC_API, true)};

  login(body: Login): Observable<LoginResponse> {
    return this.http.post<LoginResponse>(`${environment.apiUrl}/login`, body, this.CONTEXT);
  }

翻译模块的配置如下:

  TranslateModule.forRoot({
        defaultLanguage: 'fr',
        loader: {
          provide: TranslateLoader,
          useFactory: (http: HttpClient) => new TranslateHttpLoader(http),
          deps: [HttpClient]
        },
      })

推荐答案

您可以制作自定义翻译加载器来添加上下文

export class MyTranslateLoader implements TranslateLoader {
  private readonly CONTEXT = {context: new HttpContext().set(IS_PUBLIC_API, true)};
  constructor(private http: HttpClient, public prefix: string = "/assets/i18n/", public suffix: string = ".json") {}

  public getTranslation(lang: string): Observable<Object> {
    return this.http.get(`${this.prefix}${lang}${this.suffix}`, this.CONTEXT);
  }
}
 TranslateModule.forRoot({
        defaultLanguage: 'fr',
        loader: {
          provide: TranslateLoader,
          useFactory: (http: HttpClient) => new MyTranslateLoader(http),
          deps: [HttpClient]
        },
      })

Typescript相关问答推荐

定义JMX的类型:类型上不存在属性键

判断对象A中存在的对象B的键是否存在对象A中键的另一个数组值中

如何在Jest中嘲笑location.back()方法调用进行Angular 组件测试?

TypScript在对象上强制执行值类型时推断对象文字类型?

界面中这种类型的界面界面中的多态性

angular 17独立使用多个组件(例如两个组件)

泛型和数组:为什么我最终使用了`泛型T []`而不是`泛型T []`?<><>

无法绑定ngModel.条件ngSwitchCase中的错误

我想创建一个只需要一个未定义属性的打字脚本类型

适当限制泛型函数中的记录

是否有一个版本的联合类型递归地使属性只出现在一个可选选项中?

在Reaction-Native-ReAnimated中不存在Animated.Value

使用Redux Saga操作通道对操作进行排序不起作用

vue-tsc失败,错误引用项目可能无法禁用vue项目上的emit

如何从一个泛型类型推断多个类型

带投掷的收窄类型

如何通过转换器类继承使用多态将对象从一种类型转换为另一种类型

两个名称不同的相同打字界面-如何使其干燥/避免重复?

typescript如何从映射类型推断

React中的效果挂钩在依赖项更新后不会重新执行