HttpInterceptor在组件内部不适用于提供者服务

时间:2019-04-25 10:14:17

标签: angular interceptor angular-httpclient angular-http-interceptors angular-module

在我们的项目中,我们使用服务使用HttpClient(@ angular / common / http)发出API请求,我们的拦截器(将令牌添加到每个请求中)适用于服务内部发出的每个请求,除非服务是从这样的组件内部调用的:

@Component({
  selector: 'calendar-period',
  templateUrl: './calendar-period.component.html',
  styleUrls: ['./calendar-period.component.scss'],
  providers: [
    SettingsService
  ]
})
export class CalendarPeriodComponent implements OnInit {

在这种情况下,HTTP拦截器(是从我们的app.module加载的)将在除SettingsService之外的所有地方正常工作。

这是我们的拦截器调用的样子:

{ provide: HTTP_INTERCEPTORS, useClass: HttpConfigInterceptor, multi: true },

一些有用的信息:

  • 此服务(settingsService)仅在此处加载
  • 每个组件都有其自己的模块,我们尝试将其加载到该模块中,它起作用了,但不再是该组件的“专有”了
  • 每页加载一个模块的模块
  • 我们正在对路线使用延迟加载
  • 我们试图将拦截器放置在页面模块,组件模块以及组件本身中,没有任何作用

我们要达到的目标: -我们的许多组件都将使用此服务来处理设置的检索和更新(而不是每次都在每个组件中进行设置),并且要使其正常工作,我们需要在每个组件中分别加载该服务存储一些唯一的数据,例如设置的ID。

0 个答案:

没有答案