[英]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.