You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Angular应用中访问类库中声明的HttpContextToken?

在Angular类库中声明可被应用访问的HttpContextToken

要让Angular应用能访问类库中的SHOW_PROGRESSBAR HttpContextToken,按以下步骤操作即可:

1. 在类库中创建公共的Token声明文件

在类库的src/lib目录下新建文件(比如http-context-tokens.ts),在其中声明并导出这个HttpContextToken:

// src/lib/http-context-tokens.ts
import { HttpContextToken } from '@angular/common/http';

// 声明带默认值的HttpContextToken,默认返回false表示不显示进度条
export const SHOW_PROGRESSBAR = new HttpContextToken<boolean>(() => false);

2. 在类库的public-api.ts中导出该Token

类库的public-api.ts是对外暴露API的入口,必须在这里导出这个Token,确保构建后的类库包能让外部应用导入它:

// public-api.ts
// 导出你的HttpContextToken
export * from './lib/http-context-tokens';
// 如果你的拦截器需要被应用注册,也可以在这里一并导出
// export * from './lib/your-interceptor.module';

3. 在Angular应用中导入并使用

构建并发布(或本地引用)类库后,应用就能直接从类库包中导入SHOW_PROGRESSBAR,然后在请求中使用:

// 应用中的请求代码
import { SHOW_PROGRESSBAR } from '你的类库包名称'; // 替换为实际的类库包名

this.http.request<KweResponse<any>>(
  method,
  this.url.getString(endpoint),
  {
    body,
    headers: options?.headers,
    params: options?.params,
    observe: 'response',
    context: new HttpContext()
      .set(SHOW_PROGRESSBAR, options?.withProgressbar ?? true)
  }
);

关键说明

  • 必须通过public-api.ts导出Token,否则类库构建后外部无法访问这个内部声明的变量。
  • Token的默认值通过工厂函数设置(() => false),这样当请求未显式设置该Token时,拦截器会默认不触发进度条逻辑,和你的拦截器判断逻辑匹配。

内容的提问来源于stack exchange,提问作者R3N0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 08:50:09