Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何有条件地向app.module添加拦截器?_Javascript_Angular_Angular Httpclient Interceptors - Fatal编程技术网

Javascript 如何有条件地向app.module添加拦截器?

Javascript 如何有条件地向app.module添加拦截器?,javascript,angular,angular-httpclient-interceptors,Javascript,Angular,Angular Httpclient Interceptors,我读了其他的话题,但没有一个能反映我的问题。 首先是背景-我们得到了一个Angular应用程序,它在两种模式下工作-第一种模式下应用程序使用一个API,第二种模式下使用另一个API 这,我想要实现的是只在第二种模式下使用Http拦截器 那么,有没有一种方法可以根据应用程序配置文件或环境属性有条件地添加Http拦截器呢 我创建了一种setInterceptors()helper函数,它根据条件将这些拦截器添加到提供程序数组中,但在生成过程中失败,并显示以下消息: decorators中不支持函数调

我读了其他的话题,但没有一个能反映我的问题。 首先是背景-我们得到了一个Angular应用程序,它在两种模式下工作-第一种模式下应用程序使用一个API,第二种模式下使用另一个API

这,我想要实现的是只在第二种模式下使用Http拦截器

那么,有没有一种方法可以根据应用程序配置文件或环境属性有条件地添加Http拦截器呢

我创建了一种setInterceptors()helper函数,它根据条件将这些拦截器添加到提供程序数组中,但在生成过程中失败,并显示以下消息:

decorators中不支持函数调用


您可以为2种模式创建2个单独的模块,然后将其注入所需的模块提供程序中

@Injectable({
  providedIn: YourModule
})
export class HttpInterceptorService implements HttpInterceptor {
}

这里
YourModule
是您想要应用拦截器的模块

为什么您不在应用程序级别注入拦截器,而是在其中检查某个应用程序是否配置===某个东西,然后执行它?如果我理解,则不确定。您能否提供一些(伪)代码作为示例?例如,您有HttpInterceptor,将其注入app.module.ts中,然后将其插入HttpInterceptor in intercept或其他一些函数中,检查是否返回(environment.app==“develop”);你有两个单独的模块用于两种模式吗?@AdritaSharma Nope。这就是问题所在。嗯,除了app.module,我无法在任何模块中初始化拦截器。就像它们在延迟加载的模块中完全不可见一样:-(请阅读: