- Notifications
You must be signed in to change notification settings - Fork26.4k
Open
Labels
Milestone
Description
Which @angular/* package(s) are relevant/related to the feature request?
common
Description
In our project we use modular HttpClient with different setup of interceptors for accessing different API's.
We createcreateHttpClient
helper for that:
exportfunctioncreateHttpClient(...features:HttpFeature<HttpFeatureKind>[]):HttpClient{assertInInjectionContext(createHttpClient);constinjector=createEnvironmentInjector([provideHttpClient(...features)],inject(EnvironmentInjector),);returninjector.get(HttpClient);}
And we use this helper inside{provide: CUSTOM_HTTP_CLIENT_TOKEN, useFactory: () => createHttpClient()}
.
It works until we migrate tohttpResource
, because there is no way to specify what instance ofHttpClient
should be used.
Proposed solution
Add optionhttpClient?: HttpClient
toHttpResourceOptions
.
Alternatives considered
Create custom injection context, and runhttpResource
inside it:
functionbindHttpResource<T>(resourceFactory:()=>HttpResourceRef<T>,httpClientToken:InjectionToken<HttpClient>):HttpResourceRef<T>{assertInInjectionContext(bindHttpResource);constinjector=Injector.create({providers:[{provide:HttpClient,useExisting:httpClientToken,}],parent:inject(Injector),});returnrunInInjectionContext(injector,resourceFactory);}