如何在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
相关产品推荐
相关产品推荐

