2016-11-13 4 views
1

私はangular2に比較的新しく、チュートリアルやヒーローのツアーをウェブサイトから終了しました。そして、今度は角度とamChartでいくつかのことをやろうとします。Angular2は変数を未定義にリセットしますか?

現在、私は割り当てられた値を保持していない変数にいくつかの問題があります。問題は何ですか - amchartsがなくてもテスト用の数値型変数を使用しても問題は発生します

export class SomeComponent { 
    chart: AmCharts.AmChart; 
    test: number; 

    constructor() {} 

    ngOnInit(): void { 
     this.test = 5; 
     console.log("number: " + this.test); 
    } 

    ngAfterViewInit(): void { 
     console.log("number2: " + this.test); 
     this.chart = AmCharts.makeChart([...]); 
     setInterval(this.update, 5000); 
     console.log("number3: " + this.test); 
    } 

    update(): void { 
     console.log("number in update:" + this.test); 
     [...] 
    } 
} 

と、これは私の出力である:私は

...の意識何か、イムないので、これは私のクラスで欠場

number: 5 
number2: 5 
number3: 5 
number in update: 5 
number in update: undefined 

ので、明らかに、テストngOnInitの値5で初期化され、ngAfterViewInitまで値が保持されます。しかし、更新がSetIntervalから呼び出された場合、testは "undefined"です。

ご協力いただきありがとうございました。 :)

答えて

2

メソッドまたは関数の参照をこのように渡す "休憩" this.

setInterval(this.update, 5000); 

使用.bind()

setInterval(this.update.bind(this), 5000); 

または矢印の機能の問題を解決する

setInterval(() => this.update(), 5000); 

+0

再び何かを学んだ - ありがとう! :)次の4分間の回答を受け入れることができないので、後で行います – MrLowbob

+1

これは開発者の人生です:) –