angular - 通过调用端点填充角度对象
问题描述
我想从我将从端点获取的数据中填充对象的一部分,然后将该填充的对象传递给另一个端点,但我最终得到了未定义的对象,我认为这是因为获取该数据需要一段时间从我的端点,不知道如何修复它,这里是下面的函数:
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); }
解决方案
将您的其他代码放入.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); }
推荐阅读
- r - R sample.int(length(x), size, replace, prob) 中的错误:当“replace = FALSE”时,不能抽取大于总体的样本
- javascript - 努力在javascript中重置滑块输入
- android - Android TextView 使每行的字体大小不同
- oracle-apex - 基于用户输入的交互式网格的列顺序
- ios - 我想在选择或取消选择时以字典格式发送参数应该在字典中添加或删除元素
- amazon-web-services - 如何从 aws 秘密管理器中检索 terraform 中的秘密
- discord.js - 如何在我的命令 discord.js 项目中获取 name/id/@
- python - 根据条件创建总和行
- php - ErrorException 从空值创建默认对象:尝试同时插入和更新
- clang - 使用 llvm 在循环向量器中收集和分散内部函数