typescript 将类数组中的类对象推入Angular /类型脚本

mzillmmw  于 2022-12-30  发布在  TypeScript
关注(0)|答案(4)|浏览(139)

我有一个代理类

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

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

public agents : Agent[];

现在我如何在这个变量中推送值?我尝试了以下方法,但都不起作用。

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

wwodge7n1#

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

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

agents.push(_agent);
c6ubokkw

c6ubokkw2#

你需要初始化你的数组,否则你会得到一个“cannot read property 'push' of undefined”的错误。像你那样使用一个普通的对象是可以的(最好去掉属性两边的引号),例如:

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);
agxfikkp

agxfikkp3#

我认为,仅仅是改变:
x1个月1日至x1个月1日x1个月2日
和(如果您仍在同一个组件和方法中):
x1米3英寸至x1米4英寸x1米5英寸

更新日期:

如果使用同一方法:

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

如果你想在声明时推送,那是不可能的,你只是用默认数据初始化,为什么你要push

例如

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

DEMO

hiz5n14c

hiz5n14c4#

首先,您的类需要一个构造函数,以便用参数初始化它

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显示代理的内容,你必须通过引用来改变数组,否则angular将检测不到这些改变。

希望这有帮助!

相关问题