首页 > 解决方案 > 通过调用端点填充角度对象

问题描述

我想从我将从端点获取的数据中填充对象的一部分,然后将该填充的对象传递给另一个端点,但我最终得到了未定义的对象,我认为这是因为获取该数据需要一段时间从我的端点,不知道如何修复它,这里是下面的函数:

upsetSavedReport(pagePath: string, saveReportContent: ReportSaveReportContext, fields: Array<{ isChecked: boolean, name: string }>, mySavedReport: ReportMySavedReportContext) {
try {
  let reportType = this.reportRouteFactory.getLabel2ByKey(pagePath);
  if (reportType) {
    let filterContent = saveReportContent.filter;
    let report = this.findReportById(saveReportContent.reportId, mySavedReport);

    this.deleteDuplicateReportByName(mySavedReport, saveReportContent);
    if (!report) {

    report.ReportName = saveReportContent.reportName;
    report.ViewFields = [];
    this.nrcService.getUserInfo().then(data => {
      //The problem is here I get the data but doesnt populate the field
      report.SendTo = [data && data[0] && data[0].emailaddress && data[0].emailaddress.split(/[,;]/)[0]] || null;
    });
      report = {
        ReportID: this.sharedService.generateGUID(),
        UID: globalConfig.settingsData.UserId || '',
        ReportName: saveReportContent.reportName,
        ReportType: reportType,
        Filters: [],
        ViewFields: []
      } as SavedReport;
      mySavedReport.reports.push(report);
    }
  }
} catch (e) { this.errorService.popupMessage(e); }

标签: angularasynchronousangular5

解决方案


将您的其他代码放入.then

upsetSavedReport(pagePath: string, saveReportContent: ReportSaveReportContext, fields: Array<{ isChecked: boolean, name: string }>, mySavedReport: ReportMySavedReportContext) {
try {
  let reportType = this.reportRouteFactory.getLabel2ByKey(pagePath);
  if (reportType) {
    let filterContent = saveReportContent.filter;
    let report = this.findReportById(saveReportContent.reportId, mySavedReport);

    this.deleteDuplicateReportByName(mySavedReport, saveReportContent);
    if (!report) {

    report.ReportName = saveReportContent.reportName;
    report.ViewFields = [];
    this.nrcService.getUserInfo().then(data => {

//Inside the .then block
    report = {
            ReportID: this.sharedService.generateGUID(),
            UID: globalConfig.settingsData.UserId || '',
            ReportName: saveReportContent.reportName,
            ReportType: reportType,
            Filters: [],
            ViewFields: []
          } as SavedReport;

      report.SendTo = [data && data[0] && data[0].emailaddress && data[0].emailaddress.split(/[,;]/)[0]] || null;

          mySavedReport.reports.push(report);


    });

    }
  }
} catch (e) { this.errorService.popupMessage(e); }

推荐阅读