2017-12-11 16 views
2

angular4에 HTTP_INTERCEPTORS을 사용하고 있습니다. 이를 위해 HttpInterceptor 인터페이스를 구현하는 HttpServiceInterceptor 클래스를 만들고 intercept 메서드에 대한 정의를 제공합니다. 그런 다음 HTTP_INTERCEPTORS에 대한 등록 된 공급자는멀티 : 앵글 4의 공급자에서 진정한 의미는 무엇입니까

providers: [{ 
    provide: HTTP_INTERCEPTORS, 
    useClass: HttpServiceInterceptor, 
    multi: true 
}], 

이며이 문제가 없습니다. 하지만 여전히 나는 multi:true이 무슨 뜻인지 이해하지 못합니까? 나는 this answer을 읽었다.

내가 multi:true 옵션을 제거하면 다음이 HTTP_INTERCEPTORS을 의미 하는가 브라우저 측

Uncaught Error: Provider parse errors: 
Mixing multi and non multi provider is not possible for token InjectionToken_HTTP_INTERCEPTORS ("[ERROR ->]"): in NgModule AppModule in ./[email protected]:-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) 

에 오류가 여러 지침이나 구성 요소를 초기화 다중 공급 업체 인가? 그렇다면 다른 지침과 구성 요소는 무엇입니까?

+0

다중 공급자는 지시문이나 구성 요소와 관련이 없습니다. 인용 된 답변은 지시어만을 예로 들어 설명합니다. – estus

+0

그래서 답변에 따라 HTTP_INTERCEPTOR는 여러 개의 지시어를 제공하는 토큰입니다. 새 공급자를 등록하면 다른 등록 된 공급자가 무시됩니다? –

+0

토큰마다 여러 값을 제공합니다. 다시 말하지만, 지시어와 아무런 관련이 없습니다. – estus

답변

2

다중 공급자는 지시문과 아무 관련이 없습니다. This answer은 지시문을 예로 들어 설명합니다. FOO 것을 고려

providers: [ 
    { provide: FOO, useClass: Bar, multi: true }, 
    { provide: FOO, useClass: Baz, multi: true } 
] 

인이 토큰에 할당 된 여러 공급자의 배열, 즉 의존성 주입 FOO하게 사출 토큰 동일한 것으로서 :

providers: [ 
    { provide: FOO, useValue: [Bar, Baz] } 
] 

차이점 복수 공급 업체가 동일한 인젝터의 여러 위치에 정의 될 수 있으며 모든 추가 { provide: FOO, multi: true, ... }push ~ FOO 배열을 수행합니다.