Как получить доступ к данным, возвращаемым из метода API Subscribe снаружи в Angular - PullRequest
1 голос
/ 23 апреля 2020

Это мой 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();

  }

Внутри этой функции я вызываю вышеуказанный метод.

 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 выдает результат, подобный undefined . Первый файл console.log выдает результат, подобный этому. enter image description here Как я могу получить Данные console.log снаружи?.

1 Ответ

0 голосов
/ 23 апреля 2020

Вы можете ввести новый метод для этого

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

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