2017-11-19 1 views
1

Angular Docs에 따르면 공급자가 필수 일 때 다른 개체를 삽입 할 수 있습니다."제공하는"및 "사용하는 클래스"를 사용하는 것이 유용 할 수 있습니까?

오래된 구성 요소를 가정 해 봅시다 [...]은 OldLogger 클래스에 의존하지만, 어떤 이유로 업데이트 할 수 없습니다 :이 작업을 수행하는 좋은 이유 보았을 때, 내가 찾은 유일한 정보는 다음이있다 그것을 사용하는 오래된 구성 요소.

나는 여전히 의문입니다. 어떤 경우 이전 구성 요소를 업데이트 할 수없는 이유는 무엇입니까? 구성 요소 또는 지시어이 클래스를 예상하고 다른 클래스를 삽입하면 위험하지 않습니다. provideuseClass을 필수적으로 사용하는 경우는 무엇입니까?

+0

의 ErrorHandler의 MyErrorHandler 클래스를 사용하는 각도를 말할 것이다 오류를 처리하기 위해 내 사용자 정의 클래스를 사용하려면 'useClass'는 기본적이고 가장 많이 사용되는 전략이며 제공자를 다음과 같이 정의 할 때 사용됩니다 : provider : [MyClass]'->'providers : [provide : MyClass, useClass : MyClass]' –

답변

1

useClassMyClass 인스턴스가 주입되어야 생성자 파라미터의 입력되면, MyMockClass 인스턴스 대신 주입 즉 다른 실시

{ provide: MyClass, useClass: MyMockClass } 

를 제공하기위한 것이다.

useValue

은 각도 사용하는 사용자 정의 인스턴스 생성 논리를 만드는 것입니다 가능한 것 'myServerPort' useValue하지 않을 경우에 대한 값을 제공 할 수있는 방법이없는 것이다 각도

providers: [ 
    DebA, 
    DebB, 
    { provide: MyClass, useValue: (a, b) => new MyClass(a, b), deps: [DepA, DebB] } 
] 

또는

{ provide: 'myServerPort', useValue: 8080 } 

.

2

내 경우 각도에 의해 제공되는 기본 클래스 이외의 다른 로직을 구현해야 할 때 사용합니다. 예를 들어 ErrorHandler를 2+ 각도에서 오류를 처리하기위한 기본 클래스입니다하지만 난

{ provide: ErrorHandler, useClass: MyErrorHandler } 

을 사용 그래서 대신

관련 문제