c# - 如何在 Typescript 中将数据对象从一种方法传递到另一种方法
问题描述
我的问题可能听起来很难看,但我正在尝试学习 Typescript。我创建了三种返回数据的不同方法,并将所有返回的数据分配给对象(任何),以便我可以将其绑定到客户端。使用一种具有不正确的硬编码值的方法可以正常工作。
我在getDetails方法下嵌套了 getOverridelist()和getDiscountedRates(),我在ngOnInit()上调用它
在OnInit类下,我已经声明
public myOveride: any = {};
public myDiscount: any = {};
ngOnInit() {
this.getDetails();
}
方法:正在传递此方法
getDetails() {
this.myService.getDetails(ID).then(data => {
if (data != undefined) {
this.seller = data;
this.getOverridelist();
this.getDiscountedRates();
} else {
-----------
}
this.isLoading = false;
this.error = false;
})
.catch(error => {
this.error = true;
this.errorMsg = 'Error';
this.isLoading = false;
});
}
下面的方法返回一个数据对象,然后我将其泵送到 myOveride: any。从返回的数据中,我想得到returnId并在这个getDiscountedRates()下传递/使用它;我也会使用一些字段。
getOverridelist() {
var customerId = this.seller.customer;
this.isLoading = true;
this.myService.getOverridelist(customerId).then(dataObject => {
this.myOveride = dataObject;
}).catch(error => {
this.error = true;
this.errorMsg = 'Error';
this.isLoading = false;
});
}
dataObject返回数据,我想使用此处返回的 Id。我想在这个功能上使用它。
getDiscountedRates() {
var overrideId = 261; // I want to remove this hardcoded Id.
this.isLoading = true;
this.myService.getDiscountedRates(overrideId).then(dataObjec => {
this.myDiscount = dataObjec;
}).catch(error => {
this.error = true;
this.errorMsg = 'Error';
this.isLoading = false;
});
}
如何在 typeScript 中将数据对象从一种方法传递到另一种方法?
解决方案
回答你的问题
如何在 Typescript 中将数据对象从一种方法传递到另一种方法
您可以简单地将数据作为参数添加到您的函数中:
getDiscountedRates(dataObject: any) {
...
}
这里可能会出现一个问题,因为您正在调用getDiscountedRates
from getDetails
,并且在您实际拥有之前dataObject
(因为该对象从响应中返回。getOverridelist
我的建议是触发并传递对象或在访问它之前检查是否有一个 ID(因为您初始化它到一个空对象)。getDiscountedRates
getOverridelist
this.myOverride
所以类似于以下内容: getOverridelist() {
var customerId = this.seller.customer;
this.isLoading = true;
this.myService.getOverridelist(customerId).then(dataObject => {
this.myOveride = dataObject;
this.getDiscountedRates(dataObject);
}).catch(error => {
this.error = true;
this.errorMsg = 'Error';
this.isLoading = false;
});
}
getDiscountedRates(dataObject) {
this.isLoading = true;
this.myService.getDiscountedRates(dataObject.id).then(dataObjec => {
this.myDiscount = dataObjec;
}).catch(error => {
this.error = true;
this.errorMsg = 'Error';
this.isLoading = false;
});
}
推荐阅读
- sql-server - 使用 SQL Server 更新引用的聚合失败并显示“无法插入 ...当 IDENTITY_INSERT 设置为 OFF”
- javascript - 使用 event.target 时,它可以在网站上运行,但代码有错误
- angular - 在 Angular 6 上的库中创建画布
- windows - 在 Windows 操作系统中使用 julia 语言的文本编辑器
- javascript - 我如何动态生成一个完整的 reactJS 应用程序
- vue.js - 如何使用 npm 包依赖
- c++ - 使用线程池并行化函数会使其变慢:为什么?
- android - 错误:无法在此处访问无效/释放的位图
- c++ - 无法从 gmail 收件箱中删除电子邮件
- android-databinding - appbar_scrolling_view_behavior 未在 SwipeRefreshLayout 数据绑定 android 解决