2016-11-13 59 views
1

我對angular2比較陌生,剛剛完成了他們的網站上英雄們的教程和遊覽,現在嘗試做一些角度和amChart。Angular2將變量重置爲undefined?

目前我有一些問題,不保留其分配的值的變量,我不知道,什麼問題 - 即使沒有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調用更新時,則測試爲「未定義」。

在此先感謝您提供任何幫助或有用的鏈接。 :)

回答

2

傳遞方法或函數的引用這樣 「休息」 this.

setInterval(this.update, 5000); 

使用.bind()

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

或箭頭功能

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

來解決這個問題

+0

又學到了一些東西 - 謝謝! :)接下來的4分鐘不能接受答案,之後會這樣做 – MrLowbob

+1

這就是開發者的生活:) –