2

각도 의존성 주입을 사용하면 서비스 클래스 대신 토큰을 사용하여 문자열, 함수 또는 객체를 삽입 할 수 있습니다.종속성 주입 토큰 값을 업데이트하는 방법

providers: [{ provide: MyValueToken, useValue: 'my title value'}] 

나는 다음과 같이 사용 :

내가 이렇게 내 모듈에 선언

constructor(@Inject(MyValueToken) my_value: string) { 
    this.title = my_value; 
} 

하지만, 어떻게 구성 요소의 값을 업데이트하고 다른 구성 요소 얻을하도록 할 수 있습니다 때마다 새로운 가치? 즉, BehaviorSubject과 같은 것을 사용하여 값을 내보내고 값을 수신하는 기능을 시뮬레이션하려고합니다.

정적 인 데이터 만 제공하는 경우 이러한 주입 토큰 값을 사용하는 것은 불가능합니다. 대신 구성 요소에 정적 값을 선언하고 직접 사용할 수 있습니다. 대신 불변 인 원시의

+1

예, 정적 값을 선언하고 그것의 경우 수 당신이 해야하는 한 장소에서만 사용 *. DI는 여러 곳에서 사용되고 일관성을 원할 때나 테스트를 위해 대체 값을 주입하고자 할 때 유용합니다. 어느 쪽도 해당하지 않는다면 복잡성을 추가하지 마십시오. https://angular.io/guide/dependency-injection-in-action을 읽는 것이 좋습니다. – jonrsharpe

+0

@jonsharpe 위대한 답변은 바로 요점! 고마워요 :) –

답변

2

, 당신은 다른에 BehaviorSubject, 다음 액세스를 사용하여 하나 개의 구성 요소를 업데이트하고 구독 할 수 있습니다 :

providers: [{ provide: MyValueToken, useValue: new BehaviorSubject('')}] 

// consumer 
constructor(@Inject(MyValueToken) my_value: BehaviorSubject) { 
    my_value.subscribe((my_value)=>this.title = my_value); 
} 

// producer 
constructor(@Inject(MyValueToken) my_value: BehaviorSubject) { 
    my_value.next('my title value'); 
} 
+0

이것은 서비스 클래스 선언과 BehaviorSubject를 함께 사용하는 것과 어떻게 다른가요? 나는 모든 각도 의존성 주입 토큰 값이 아무 것도 복잡하지 않게하는 쓸모없는 의식이라고 생각합니다. 그래서 그 주입 토큰을 잘 사용하면 어떨까요? –

+1

@HamedBaatour DI 패턴이 유익한 것과 같은 이유. 확장 성 및 테스트 가능성. – estus

+1

@HamedBaatour, [this] (http://misko.hevery.com/2008/11/11/clean-code-talks-dependency-injection/) –