![](/img/trans.png)
[英]Cannot read property 'push' of undefined Typescript / Angular 6
[英]Cannot read property 'push' of undefined Angular/Typescript
我试图将一个Funcionarios
对象数组添加到Equipa
对象中,但是当我尝试push
一个new Funcionarios
的Equipa
对象时,它弹出并且出现此错误TypeError: Cannot read property 'push' of undefined
,我已经遍历了几次代码,并且初始化了所有变量,但是它总是给我同样的错误。
export class Funcionarios {
id : Number;
codFunc: Number;
nomeFunc: string;
constructor(codFunc: Number, nomeFunc: string) {
this.codFunc = codFunc;
this.nomeFunc = nomeFunc;
}
}
export class Equipa {
id : Number;
codEquipa: Number;
nomeEquipa: string;
ocorFuncs: Funcionarios[] = [];
constructor(id : Number, codEquipa: Number, nomeEquipa: string, funcs: Funcionarios[]) {
this.id = id;
this.codEquipa = codEquipa;
this.nomeEquipa = nomeEquipa;
this.ocorFuncs = funcs;
}
}
export class TestComponent implements OnInit {
equipa: Equipa = new Equipa(null, null, null, null);
ngOnInit() {
this.equipa.ocorFuncs.push(new Funcionarios(1, "qwe"));
this.equipa.ocorFuncs.push(new Funcionarios(2, "asd"));
this.equipa.ocorFuncs.push(new Funcionarios(3, "zxc"));
}
}
好的,所以您现在就知道要做什么。
您想将value推送到null
, null
没有push方法。 如果您将此声明行更改为
equipa: Equipa = new Equipa(null, null, null, []);
它将工作正常,在stackblitz上检查
对于构造Equipa
分配ocorFuncs
与任何从参数来funcs
而你的情况是null
,从而覆盖你初始化字段的值。 您应该检查参数是否为空,如果参数为空,则保留默认值:
export class Equipa {
id : Number;
codEquipa: Number;
nomeEquipa: string;
ocorFuncs: Funcionarios[] = [];
constructor(id : Number, codEquipa: Number, nomeEquipa: string, funcs: Funcionarios[]) {
this.id = id;
this.codEquipa = codEquipa;
this.nomeEquipa = nomeEquipa;
this.ocorFuncs = funcs || this.ocorFuncs;
}
}
您可以这样创建Equipa
对象:
new Equipa(null, null, null, null);
初始化ocorFuncs
的第四个参数作为null
传递,因此:
this.equipa.ocorFuncs.push(new Funcionarios(3, "zxc"))
在未正确初始化的对象上调用push
。
您正在使用null
值初始化equipa
。 因此,在调用new Equipa(null, null, null, null)
将它们在构造函数中设置为null
this.ocorFuncs = funcs;
尝试用一个空数组初始化它
equipa: Equipa = new Equipa(null, null, null, []);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.