【问题标题】:How to create array of objects from another class in angular?如何以角度从另一个类创建对象数组?
【发布时间】:2021-09-07 01:49:20
【问题描述】:

我有两个角类,分别称为 A 类、B 类,并且我有一个角组件

export class B {
    id:String;
    Name:String;
}

我的 A 类,我从组件传递数据的地方。其中 Component 从 httpclient 请求中检索数据。此外,我正在尝试创建一个 B 类对象数组。哪个会有数据大小

export class A {

  mygroupB : B[];

  setData(data:any){
      if((data.length) >0){
        this.mygroupB = new B[data.length];
      }else return;

  }
}

但是当我运行代码时出现错误 “B[data.length] 不是构造函数”。我想不通,这里有什么错误。提前致谢。

【问题讨论】:

  • 您应该将对象创建为new B();不要传递任何参数,因为您的 B 类没有构造函数来接受它。您可以使用 map 或循环来创建数组
  • 这不是 java,你不能像在 javascript 或 typescript 中那样创建数组。只需this.mygroupB = []; 就足够了。

标签: angular typescript


【解决方案1】:

第一个问题是您在分配值之前没有实例化您的 mygroupB。下一个问题是您尝试将类型为 any 的数据的值直接分配给类型为 B 的 mygroupB .

在下面的解决方案中,我实例化了 mygroupB,然后迭代数据的值,然后将其推送到 mygroupB em> 数组。

setData(data: any) {
    if (data.length > 0) {
      this.mygroupB = new Array<B>();
      data.forEach(e => {
        this.mygroupB.push({
          Name: e.Name,
          id: e.id
        });
      });
      console.log(this.mygroupB);
    }
}

【讨论】:

  • 谢谢!非常喜欢!
  • 很高兴能帮上忙!
猜你喜欢
  • 2021-03-30
  • 1970-01-01
  • 2019-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
相关资源
最近更新 更多