Sun*_*arg 8 angular-providers angular angular4-httpclient
我HTTP_INTERCEPTORS在angular4中使用.为此,我创建HttpServiceInterceptor了实现HttpInterceptor接口的类并为intercept方法提供了定义.然后注册提供商HTTP_INTERCEPTORS这样
providers: [{
provide: HTTP_INTERCEPTORS,
useClass: HttpServiceInterceptor,
multi: true
}],
Run Code Online (Sandbox Code Playgroud)
这工作正常.但我仍然不明白multi:true这里的意思是什么?我读过这个答案.
如果我删除multi:true选项,则浏览器端出现错误
Uncaught Error: Provider parse errors:
Mixing multi and non multi provider is not possible for token InjectionToken_HTTP_INTERCEPTORS ("[ERROR ->]"): in NgModule AppModule in ./AppModule@-1:-1
at NgModuleProviderAnalyzer.webpackJsonp.487.NgModuleProviderAnalyzer.parse (vendor.js:36335)
at NgModuleCompiler.webpackJsonp.487.NgModuleCompiler.compile (vendor.js:43184)
at JitCompiler.webpackJsonp.487.JitCompiler._compileModule (vendor.js:51527)
at vendor.js:51472
at Object.then (vendor.js:26354)
at JitCompiler.webpackJsonp.487.JitCompiler._compileModuleAndComponents (vendor.js:51470)
at JitCompiler.webpackJsonp.487.JitCompiler.compileModuleAsync (vendor.js:51399)
at PlatformRef_.webpackJsonp.0.PlatformRef_._bootstrapModuleWithZone (vendor.js:4746)
at PlatformRef_.webpackJsonp.0.PlatformRef_.bootstrapModule (vendor.js:4732)
at Object.<anonymous> (app.js:23366)
Run Code Online (Sandbox Code Playgroud)
这是否意味着HTTP_INTERCEPTORS多提供程序初始化多个指令或组件?如果是,那么其他指令和组件是什么?
多供应商与指令无关.这个答案仅作为一个例子提到指令.
考虑到这FOO是注射令牌,这个
providers: [
{ provide: FOO, useClass: Bar, multi: true },
{ provide: FOO, useClass: Baz, multi: true }
]
Run Code Online (Sandbox Code Playgroud)
使FOO注入依赖项成为分配给此令牌的多个提供程序的数组,即与以下内容相同:
providers: [
{ provide: FOO, useValue: [Bar, Baz] }
]
Run Code Online (Sandbox Code Playgroud)
不同的是,多提供者可以在同一喷射器的多个位置来限定,并且所有附加{ provide: FOO, multi: true, ... }做push到FOO阵列.
| 归档时间: |
|
| 查看次数: |
4316 次 |
| 最近记录: |