【发布时间】:2020-01-14 14:44:08
【问题描述】:
我正在制作一个 Angular 库,其中包含我们所有应用程序都需要的 auth/graphql 相关代码。
问题是,我将uri 存储在 Angular 环境变量中,而 Angular 库中不存在该变量。
执行ng add apollo-angular 会生成以下模块:
graphql.module.ts(为清楚起见删除了导入):
const uri = ''; // <-- add the URL of the GraphQL server here
export function createApollo(httpLink: HttpLink) {
return {
link: httpLink.create({uri}),
cache: new InMemoryCache(),
};
}
@NgModule({
exports: [ApolloModule, HttpLinkModule],
providers: [
{
provide: APOLLO_OPTIONS,
useFactory: createApollo,
deps: [HttpLink],
},
],
})
export class GraphQLModule {}
注意uri,它创建了对这个模块的依赖,应该被注入。
在我的应用程序app.module.ts 中,我创建了一个获取环境的提供程序:
providers: [
{
provide: 'envVars', useValue: environment
}
]
我通常像这样通过构造函数注入:
constructor(@Inject('envVars') private envVars: any) {}
我尝试了很多方法来注入这个uri,但无济于事!有什么建议吗?
【问题讨论】:
标签: angular dependency-injection graphql apollo-angular