在角度/打字稿中将类对象推送到类数组中

时间:2020-03-09 10:42:24

标签: arrays angular typescript

我有一个Agent类

export class Agent{
    ID:number;
    Name: string;
}

在组件中,我有一个此类数组的变量

public agents : Agent[];

现在如何在此变量中推送值?我尝试了以下方法,但没有人起作用。

agents.push({"ID":1,"Name":"Abc"});
agents.push(new Agent(){"ID":1,"Name":"Abc"});

4 个答案:

答案 0 :(得分:0)

agents.push(<Agent>{ ID:1, Name:"Abc" });

const _agent = new Agent();
_agent.ID = 1;
_agent.Name = "ABC";

agents.push(_agent);

答案 1 :(得分:0)

您需要初始化数组,否则将收到“无法读取未定义的属性'push'”错误。像您一样使用简单的对象很好(最好删除道具周围的引号),例如

let agents : Agent[] = [];
agents.push({ ID: 1, Name: "Abc"});
console.log(agents); // outputs: [ { ID: 1, Name: 'Abc' } ]

如果您确实想创建该类的实例,则可以这样做:

const agent = new Agent();
agent.ID = 1;
agent.Name = "ABC";
agents.push(agent);

答案 2 :(得分:0)

我认为,只需更改即可

public agents : Agent[];public agents : Agent[] = []

和(如果您仍在同一组件中并且在方法内部):

agents.push({"ID":1,"Name":"Abc"}); this. agents.push({"ID":1,"Name":"Abc"});


更新:

如果您使用的是同一方法:

someMethod(){
  let localAgents :Agent[]= []; 
  localAgents.push({ID:1,Name:"Abc"});
}

如果要在声明时进行推送(无法完成),则仅使用默认数据进行初始化,为什么要push

例如

  public agents : Agent[] = [{ID:1,Name:"Abc"}];

DEMO

答案 3 :(得分:0)

首先,您的类需要一个构造函数才能使用params对其进行初始化

export class Agent {
    ID: number;
    Name: string;

    constructor(id: number, name: string) {
        this.ID = id;
        this.Name = name;
    }
}

然后,在您的组件中

...
public agents : Agent[];
...
pushAgent(id: number, name: string) {
    this.agents = [new Agent(id, name)]
}
  • 请记住,如果希望Angular显示代理的内容,则必须通过引用更改数组。否则,角度不会检测到更改。

希望这会有所帮助!