The presence of HttpInterceptor within a component is causing a ripple effect on all of the App

I am encountering an issue with a library I have that includes a component. This component has an HttpInterceptor that adds a header to each of its requests.

The problem arises when I use the component in another project - the HttpInterceptor ends up adding headers to all requests within the entire project, rather than restricting it to just the component's requests.

Does anyone have any suggestions on how to resolve this issue?

Thank you for your assistance :)

Answer №1

It appears that having separate interceptors within an application is not possible, as confirmed through my experimentation detailed in the link below: Interceptors-check

In my trial, I attempted:

  • Importing Parent & Child Modules separately into the App component.
  • Importing Child Module into Parent component and then importing Parent into App.
  • Moving all services inside the modules, even if it meant duplicating code.
  • Transferring the HttpClientModule from Parent and Child modules to the App module.

It seems that when we register interceptor(s), they are attached to the entire application rather than just a specific module.

Note: I removed my previous answer where I discussed a different approach, as it turned out to be incorrect.

If you wish to have distinct interceptors for various components, you can encapsulate them in separate modules and import one into another based on your requirements.

// child.module.ts
@NgModule({
  ...
  declarations: [ChildComponent],
  providers: [{
      provide: HTTP_INTERCEPTORS,
      useClass: InterceptorTwo,
      multi: true,
  }],
  exports: [ChildComponent]
})
export class ChildModule{}


// parent.module.ts
NgModule({
  imports: [
    ... ,
    ChildModule
  ],
  providers: [
    ... , {
      provide: HTTP_INTERCEPTORS,
      useClass: InterceptorOne,
      multi: true,
    }],
  ...
})
export class ParentModule{}

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Implementing strict validation for Angular @Input by allowing only predefined values

I am facing an issue where I receive a string value as a parameter in a component, but I want to restrict the possible values that can be passed as a parameter, similar to using an enum. Currently, I have: @Input() type: string = ''; However, ...

React Typescript: exploring the power of dynamic types

Can dynamic typing be implemented? The JSON structure I am working with looks like this: { "fieldName": "Some text", "type": String, "inputType": "text" }, { "fieldName": "Some bool&q ...

Exploring the world of publishing Angular 2 applications

I recently created an Angular 2 application using npm, but as a beginner I am unsure of some aspects. For instance, when I publish my application, I typically use npm publish to share it on my npm account online. However, I am wondering if there is a way t ...

Difficulty rendering images and CSS during preloading in a Node.js environment

I'm aware of the necessity to use a middleware, but I need guidance on how to implement it correctly. Here is the snippet of code I currently have: const prerender = require('prerender'); var server = prerender({ chromeFlags: ['--no-s ...

Node server encountering issue with undefined data in POST request

I have been working on an Angular2/Node.js application. Everything seems to be working fine when I retrieve an object from the Node server, but I'm facing an issue when trying to post data to the server. The request.body always shows as undefined. Can ...

Typescript: The .ts file does not recognize the definition of XMLHttpRequest

I have encountered an issue with a .ts file containing the following code: var xhttp = new XMLHttpRequest(); After running the grunt task to compile the ts files using typescript, no errors were reported. However, when I attempt to instantiate the class ...

How can I incorporate a callback function into Typescript when using Angular Material?

I am utilizing the Angular Material Dialog component and aiming to include an optional callback function, which will be triggered upon the user clicking the OK button. Can anyone guide me on how to achieve this? askUser(customData: any) { openDialog() ...

The message states that the variable "Chart" has not been defined

I have been attempting to integrate ChartJS with Angular2, but I keep encountering an error message stating that 'Chart is not defined'. I made sure to install the ChartJS typings and referenced them accordingly. Additionally, I included the char ...

Tips for arranging datasets in React Chart.js 2 to create stacked bar charts

Currently, I am facing an issue with sorting the datasets displayed in each stacked bar chart in descending order as they are showing up randomly. Here is the snippet of my code: import React from 'react'; import { Chart as ChartJS, CategoryS ...

Instructions for designing a Loading Indicator or Progress Bar within the App Directory of NextJS

Having built a substantial web application using NextJS 13, I initially utilized the Pages Router. However, as I neared completion of the website, I decided to make the switch to the App Directory. The primary motivation behind this migration was not just ...

What is the syntax for passing a generic type to an anonymous function in a TypeScript TSX file?

The issue lies with the function below, which is causing a failure within a .tsx file: export const enhanceComponent = <T>(Component: React.ComponentType<T>) => (props: any) => ( <customContext.Consumer> {addCustomData => ...

What is the reasoning behind being able to only access a component variable from outside of the component?

I've created a modified version of an example app from an Angular book. To check out the working example (in development mode), visit: You can also find the source code on GitHub here. One of the components, log, contains the variable autoRefres ...

Merging Type-GraphQL and Typegoose through a Variety of Decorators

Using a combination of Type-GraphQl and Typegoose, I aim to streamline my data definitions by consolidating them into one source for both GraphQL schemas and Mongoose queries. Is it feasible to merge the two libraries in a way that allows me to describe bo ...

The attribute 'use' is not found within the data type 'typeof...', and the property 'extend' is not present within the data type 'typeof'

As I embark on building my very first Vue app using TypeScript, I find myself facing a frustrating issue: Property 'xxx' does not exist on type 'typeof. Despite my efforts to research similar problems, none of the suggested solutions have pr ...

Angular2+ test case indicating lack of NgControl provider

I've been facing an issue while testing an angular component with multiple dependencies. The test case fails with the error: "No Provider for NgControl". Here's the detailed error message: Chrome 66.0.3359 (Mac OS X 10.13.4) configurator compone ...

Creating a versatile protractor framework to streamline multiple project implementations

There's a concept in the works for creating a 'protractor core' that will be utilized by various projects for UI testing. Currently, I have an Angular project called 'project1' with e2e tests (cucumber-protractor-typescript) that c ...

Can APP_INITIALIZER function within lazy loaded modules in Angular?

I recently implemented a lazy loaded module in my application and tried to add APP_INITIALIZER but unfortunately, it doesn't seem to be triggering. Surprisingly, the syntax I used is identical to that of my main app where it works perfectly fine. Can ...

The container is not adjusting to the screen size correctly and the flex-direction: row is not functioning as

Struggling with setting up a basic layout in Angular for my application. While I have experience with Angular, the actual HTML/CSS design is new to me. No matter what I try, I can't seem to get this container to take up the whole screen width. Variou ...

Having trouble with the .d.ts module for images?

I'm relatively new to Typescript and the only thing that's giving me trouble is the tsconfig.json. My issue revolves around importing images (in Reactjs) and them not being found: client/app/Reports/View.tsx:11:30 - error TS2307: Cannot find mod ...

What could be the reason for the Angular2 Component property not appearing on my webpage?

Here is the code snippet I am working with: import {Component} from "@angular/core"; @Component({ selector: 'my-app', template: ` <h1>{{title}}</h1> <h2>{{secondTitle}}</h2> <main-page></ma ...