Arrays 无法读取未定义的Angular/Typescript的属性“push”

Arrays 无法读取未定义的Angular/Typescript的属性“push”,arrays,angular,typescript,object,Arrays,Angular,Typescript,Object,我试图将Functionarios对象数组添加到Equipa对象中,但当我尝试推送一个新Functionarios时,它会弹出一个错误TypeError:无法读取undefined的属性“push”,我已经多次检查代码并初始化了所有变量,但它总是给我相同的错误 export class Funcionarios { id : Number; codFunc: Number; nomeFunc: string; constructor(codFunc: Numbe

我试图将Functionarios对象数组添加到Equipa对象中,但当我尝试推送一个新Functionarios时,它会弹出一个错误TypeError:无法读取undefined的属性“push”,我已经多次检查代码并初始化了所有变量,但它总是给我相同的错误

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"));
    }
}

好吧,你知道你现在要做什么了

如果要将值推送到null,则null没有推送方法。 如果您将此声明行更改为

equipa: Equipa = new Equipa(null, null, null, []);
如果在stackblitz上进行检查,它将正常工作。Equipa的构造函数使用参数funcs中的任何内容分配ocorFuncs,在您的情况下,该参数为null,因此会覆盖您初始化字段时使用的值。您应该检查参数是否为null,如果参数为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;
    }
}
您可以创建一个对象,如下所示:

新设备,空,空,空

初始化ocorFuncs的第四个参数作为null传递,因此:

this.equipa.ocorFuncs.pushnew Functionarios3,zxc

正在对未正确初始化的对象调用push。

您正在使用空值初始化equipa。所以打电话之后 新设备,空,空,空

它在构造函数中将它们设置为null

this.ocorFuncs=funcs

尝试使用空数组初始化它


equipa:equipa=新的Equipanull,null,null,[]

尝试按入ngAfterViewInit而不是ngOnInit@Luca,抱歉,这不是答案Equipa:Equipa=新设备,空,空,[]@是的,对!我的误解