Angular 2 - 方法中未定义的Component属性

时间:2016-08-04 19:34:53

标签: javascript angular

我有一个自定义类数组的属性。该阵列填充了对服务的调用,该服务调用Web服务以获取数据。我订阅了observable,并且我使用complete事件来启动加载图形的方法。

图表使用的数据应来自订阅期间填充的数组,但是当我尝试在方法中执行此操作时,我的组件属性上出现了未定义的错误。为什么会这样,我认为组件属性应该可以被同一类中的方法访问。

export class MetricsComponent implements OnInit{
errorMessage: string;
metric: MetricData[] = [];

//constructor is used for dependency injection
constructor(public _metricsService: MetricsService){}

ngOnInit(): void {
    console.log('talking to service...');
    this._metricsService.getData()
        .subscribe(
            data => this.metric = data,
            error => this.errorMessage = <any>error,
            this.LoadChart
        );  
}

LoadChart(): void {
    console.log(this.metric);  // <== this returns as undefined
}

2 个答案:

答案 0 :(得分:5)

使用箭头功能保留this.

的范围
ngOnInit(): void {
    console.log('talking to service...');
    this._metricsService.getData()
        .subscribe(
            data => this.metric = data,
            error => this.errorMessage = <any>error,
            () => this.LoadChart()
        );  
}

答案 1 :(得分:0)

这样做是为了更多信息阅读lexical thisarrow functions如果您使用的是Chrome开发人员工具,它还会显示null,Chrome开发人员工具存在一些错误。

LoadChart = () => void {
    console.log(this.metric);  //
}