首页 文章

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

提问于
浏览
0

每当我引用一个从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不存在,它只是一个关于我如何填充数据的概念所以我假设我将声明stat2 []与我声明stat1 []的方式相同

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

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

    lineChartData: Array<any>;
    
      constructor(private _httpService: HttpService, private _http: Http) {
         this._httpService.getParams("myURL").subscribe(S => {
           this.stat1 = S;
           this.lineChartData = [
              { 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' }
           ];
        });
    

    一些东西:

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

    2)我不确定stat2来自哪里......所以不确定它是否会按原样运行 .

相关问题