HTTP_INTERCEPTORS 仅在 AppModule 中

Pri*_*hra 3 angular-http-interceptors angular

我正在尝试在我的 Angular 6 应用程序中实现延迟加载,我所有的 http 调用都是在FeatureModule(延迟加载)中进行的,但我仍然必须添加HttpClientModule我的AppModule而不是FeatureModule. 真的不明白为什么。另外,当我在我的 中添加拦截器时FeatureModule,它们没有拦截任何请求。我必须将它添加到AppModule唯一的(我猜,这是因为HttpClientModule在 中AppModule)。

我想明白为什么会这样??为什么我们不能HttpClientModule并且HTTP_INTERCEPTORS只在我没有打电话的地方FeatureModule而不是在AppModule那里http

Nic*_*ico 5

要回答这个问题。

HttpClientModule在根级别添加一次。没有其他模块,无论它们是如何导入的lazyeager甚至是从库中导入的。确保它没有导入HttpClientModule

但是,您可以跨模块使用 HTTP_INTERCEPTORS 提供程序而不会出现问题。

当您HttpClientModule跨模块导入然后将其重新导入另一个模块时,它会有效地重置该模块的 HTTP_INTERCEPTORS 的提供程序。这是一种预期的行为。如果您需要有关讨论的更多信息,可以查看:https : //github.com/angular/angular/issues/20575