簡體   English   中英

如何訪問從 Angular 外部的 API 訂閱方法返回的數據

[英]How to access data returning from an API Subscribe method outside in Angular

這是我的 angular 代碼塊。

demandCurveInfo = [];

ngOnInit() {
    this.zone.runOutsideAngular(() => {
      Promise.all([
        import('@amcharts/amcharts4/core'),
        import('@amcharts/amcharts4/charts'),
        import('@amcharts/amcharts4/themes/animated'),
        import('@amcharts/amcharts4/maps'),
        import('@amcharts/amcharts4-geodata/worldLow'),
      ])
        .then(modules => {
          this.createDemandCurve(modules);

        })
        .catch(e => {
          console.error('Error when creating chart', e);
        });
    });

  }

這是我嘗試獲取 API 數據的地方。

async getDemandCurveInfo(statusType: string, valueType ) {
    const params = [];
    params.push({code: 'StreamCode', name: 'TG_PS'});
    params.push({code: 'segmentCodes', name: ['US']});
    params.push({code: 'checkinFrom', name: '2019-01-01'});
    params.push({code: 'checkinTo', name: '2019-12-31'});
    params.push({code: 'statusType', name: statusType});
    params.push({code: 'valueType', name: valueType});
    return await this.dashboardServiceHandler.getSegmentDemand([], params).toPromise();

  }

在這個 function 中,我調用了上面的方法。

 createDemandCurve(modules: any) {
        const am4core = modules[0];
        const am4charts = modules[1];
        const am4themesAnimated = modules[2].default;
        this.getDemandCurveInfo('REAL', 'TTV').then((data) => {
          this.demandCurveInfo.push(data.valueOf().data);
           console.log(this.demandCurveInfo[0]);         <- first
        });

         console.log(this.demandCurveInfo[0]);  <- second

    }

在這里,我試圖在外部獲取this.demandCurveInfo[0]數據。但是我的第二個 console.log 給出了 output,就像undefined一樣。第一個 console.log 給出了這樣的 output。 在此處輸入圖像描述 我怎樣才能在外面獲取 console.log 數據?。

您可以引入一種新方法來做到這一點

this.getDemandCurveInfo('REAL', 'TTV').then((data) => {
      this.demandCurveInfo.push(data.valueOf().data);
      printData(this.demandCurveInfo[0]);
});

printData(data: string){
    console.log(data);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM