RxJs Observable에 대한 구독을 사용하여 나중에 업데이트되는 하위 구성 요소를 전달하는 다음 시나리오를 고려하십시오.RxJS 또는 Angular Observable 구독 방법에 컨텍스트가 필요한 이유는 무엇입니까?
익명 함수를 보내지 않거나이 컨텍스트를 무시할 때 Angular는 변경 사항을 감지하지 못합니다.
// Scenario 1
// Child component IS updated properly
this.someService.someObservable.subscribe((data) => {
this.doSomething(data);
})
// Scenario 2
// Child component IS updated properly
this.someService.someObservable.subscribe(this.doSomething.bind(this))
// Scenario 3
// Child component is NOT updated properly
this.someService.someObservable.subscribe(this.doSomething)
private doSomething(data) {
// this is executed on all the scenarios
this.fieldPassedToChildComponent = data;
}
왜 변경 사항을 적용하기 위해 각도 용 컨텍스트를 바인딩해야합니까?
doSomething 내부의'this'는 전역 객체를 평가합니다. –
시나리오 2는 작동하지만 3은 작동하지 않는다는 것을 의미합니까? 이것이 '이'가 어떻게 작동하는지 이해하기 때문에. 'this'는 함수를 호출 할 때 결정됩니다. – elclanrs
@elclanrs 당신이 맞아서 편집했습니다 –