首页 > 解决方案 > 如何在 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 中将数据对象从一种方法传递到另一种方法?

标签: c#angulartypescript

解决方案


回答你的问题

如何在 Typescript 中将数据对象从一种方法传递到另一种方法

您可以简单地将数据作为参数添加到您的函数中:

getDiscountedRates(dataObject: any) {
  ...
}

这里可能会出现一个问题,因为您正在调用getDiscountedRatesfrom getDetails,并且在您实际拥有之前dataObject(因为该对象从响应中返回。getOverridelist我的建议是触发并传递对象或在访问它之前检查是否有一个 ID(因为您初始化它到一个空对象)。getDiscountedRatesgetOverridelistthis.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;
    });
}

推荐阅读