2016-07-29 7 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

聖なる牛、それは完全に働きました!リュッククス、あなたは天才で学者です。どうもありがとうございます!すごく素晴らしい一日を。 –

+0

母、問題ありません - あなたも同じです! :) – rinukkusu

関連する問題