2016-07-29 3 views
0

콜백 함수를 구성 요소 변수에 할당하고 싶습니다. 예를 들면 다음과 같습니다.콜백 함수를 변수에 할당하고 고차 함수 외부에서 호출하십시오.

... 
export class MyComponent { 
     private myCompVar: any; 

     myFunc = function(callback: (number) => void): void { 
       this.myCompVar = callback; 
     } 
} 

... 나중에이 콜백 함수를 MyComponent의 다른 함수에서 호출하십시오. 예컨대 : 내가 위에서처럼이를 구현

그러나
... 
export class MyComponent { 
     private myCompVar: any; 
     ... 
     myOtherFunc(event): void { 
       ... 
       this.myCompVar(callbackParam); 
     } 
} 

는 오류가 나는 내부 'myOtherFunc'를 호출 할 때 'this.myCompVar가'정의되지 않은 것은 말할 발생합니다. 이것은 콜백이 'myFunc'에 올바르게 설정되어 있고 그 유형이 'function'이라는 사실을 확인하면서 저를 괴롭혔습니다. 'myOtherFunc'도 'myFunc'가 호출 된 후 호출되고 예상대로 반환됩니다.

도움을 주시면 감사하겠습니다.

답변

2

function을 사용하면 올바른 this 컨텍스트가 손실됩니다.

myFunc = (callback: (number) => void): void => { 
    this.myCompVar = callback; 
} 
+0

어머나, 그것은 완벽하게 작동 : 나는 람다에게 올바르게 바로 this 컨텍스트에 바인딩 대신 (지방 화살표 기능)를 사용하여 제안 것입니다! 리 닛 쿠스, 너는 천재 야. 학자 야. 정말 고맙습니다! 매끈 매끈한 하루 되세요. –

+0

하하, 문제 없습니다 - 당신도 마찬가지입니다! :) – rinukkusu

관련 문제