仅在AppModule中使用HTTP_INTERCEPTORS

时间:2018-11-16 19:28:57

标签: angular angular-http-interceptors

我正在尝试在Angular 6应用中实现延迟加载,我所有的http调用都在FeatureModule中进行(延迟加载),但是我仍然必须在{{ 1}},而不是HttpClientModule中。真的不明白为什么。 另外,当我在AppModule中添加拦截器时,它们没有拦截任何请求。我只需要在FeatureModule中添加它(我想是因为FeatureModuleAppModule中)。

我想了解为什么会这样吗?为什么我们HttpClientModuleAppModule只能在HttpClientModule中而不在没有HTTP_INTERCEPTORS打电话的FeatureModule中不能拥有?

1 个答案:

答案 0 :(得分:1)

回答这个问题。

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

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

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