在 Ionic 上创建对象

Create objects on Ionic

早上好! 我已经使用 Ionic 工作了几个星期,我以为我真的理解 typescript 和 angular 是如何工作的,但我发现自己遇到了一个奇怪的问题,我认为它会很愚蠢......

我正在尝试创建一个名为 pendingWaybills 的对象,其中包含一些名为 waybillsclientsclientWaybills 的属性。问题是我是这样创建的:

  pendingWaybills: {
    waybills: any
    clients: any,
    clientWaybills: any,
  };

我也试过了

  pendingWaybills: {
    "waybills": any,
    "clients": any,
    "clientWaybills": any,
  };

还有其他一些方法,但是当我尝试为此属性赋值时,出现以下错误:TypeError: Cannot set property 'waybills' of undefined

我也试过分配一些字符串或整数只是为了看看它是否与我试图分配的数据有关 this.pendingWaybills.waybills = "Hi"; 但我仍然遇到同样的错误...

很高兴得到一些帮助,因为我认为这都是关于创建对象的方式(我也认为这会很愚蠢),但我被困在这里了。 谢谢!

编辑: 这是我尝试将数据分配给对象的地方。 (变量数据是一个json)

  loadPendingWaybills(){
    this.loadClients(2)
      .then(data => {
        this.pendingWaybills.waybills = data;
        var preClients = this.pendingWaybills.waybills;
          this.clients = [];
            for(let i = 0;i < preClients.length; i++){
                if(this.pendingWaybills.clients.indexOf(preClients[i].descr1_sped) == -1){
                  this.pendingWaybills.clients.push(preClients[i].descr1_sped)
                }
            }
          this.pendingWaybills.clientWaybills = [];
            for(let i = 0; i < this.pendingWaybills.clients.length; i++){
              this.getWaybills(this.pendingWaybills.clients[i], 2)
                .then(data => {
                  if(this.pendingWaybills.clientWaybills[i] != data){
                    this.pendingWaybills.clientWaybills[i] = data;
                  }
                });
            }
      });
    }

在打字稿中,做:

pendingWaybills: {
    waybills: any;
    clients: any;
    clientWaybills: any;
};

只会设置pendingWaybills变量类型。要声明变量并为其赋值,您必须执行以下操作:

pendingWaybills = { // note the "="
    waybills: something,
    clients: something,
    clientWaybills: something,
};

您需要创建对象的空实例,声明属性不会创建变量,它只会告诉您 ide 它具有哪些属性:

public pendingWaybills = {
    waybills: []
    clients: [],
    clientWaybills: [],
};

将其放入构造函数中

constructor() {
   this.pendingWaybills = {
     waybills: [],
     clients: [],
     clientWaybills: [],
  };
}

一些解释

它是嵌套对象,您不能在声明时立即创建它。

例如var xxx = 'hi';就可以了。但是如果你这样做 var xxx.yyy = 'hi' 是不行的,因为之前没有定义 xxx 所以 xxx 的 yyy 会导致错误。

你可以

var xxx = {
   yyy: 'hi'
};

或者你可以

var xxx = {};
xxx.yyy = 'hi';