无法访问从Observable [Angular 2,Typescript]检索的数据

时间:2017-07-06 07:51:09

标签: angular http typescript rxjs

每当我引用从observable提供数据的变量时,我都会收到一个promise。实施例。

我在组件中定义了我的类Stat:

export class Stats {
  name: string;
  percentage: number;
  constructor(n: string, p: number) {
    this.name = n;
    this.percentage = p;
  }
}

现在这是它变得混乱的地方,我希望Http的数据填充我的数组,所以我这样做

export class StatsComponent {

  public stat1: Stats[] = [];

  constructor(private _httpService: HttpService, private _http: Http) {
     this._httpService.getParams("myURL").subscribe(S => {
       this.stat1 = S;
    });
  }

getParams()为我提取数据,如此可观察

getParams(url: string): Observable<Stats[]>{
return this._http.get(url)
       .map(res =><Stats[]>res.json());
    }

在stat.component.ts中,我有这个数组,我希望数据填充它。抱歉stat2不存在,它只是一个关于我如何填充数据的概念所以我假设我以与声明stat1 []

相同的方式声明stat2 []
  public lineChartData: Array<any> = [
    { data: [this.stat1[0].data, this.stat2[0].data], label: 'Data 1' },
    { data: [this.stat1[1].data, this.stat2[1].data], label: 'Data 2' },
    { data: [this.stat1[2].data, this.stat2[2].data], label: 'Data 3' }
  ];

每当我引用从构造函数中的observable接收数据的任何局部变量时,它们都会抛出Promise Error。如何使用我的.subscribe范围之外的数据(在构造函数中)。

1 个答案:

答案 0 :(得分:0)

您可以在订阅中移动分配,如下所示:

use YOUR_DATABASE_NAME
go
exec sp_configure 'remote query timeout (s)',6000
RECONFIGURE WITH OVERRIDE;

一些事情:

1)强烈建议构造函数中的异步操作(如获取数据) NOT 。请考虑使用ngOnInit方法。

2)我不确定stat2的来源......所以不确定这是否会按原样运作。