我有一个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"});
答案 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"}];
答案 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)]
}
希望这会有所帮助!