Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在angular/typescript中推送类数组中的类对象_Arrays_Angular_Typescript - Fatal编程技术网

Arrays 在angular/typescript中推送类数组中的类对象

Arrays 在angular/typescript中推送类数组中的类对象,arrays,angular,typescript,Arrays,Angular,Typescript,我有一门特工课 export class Agent{ ID:number; Name: string; } 在组件中,我有一个类数组的变量 public agents : Agent[]; 现在我如何在这个变量中推送值?我尝试过以下方法,但没有人奏效 agents.push({"ID":1,"Name":"Abc"}); agents.push(new Agent(){"ID":1,"Name":"Abc"}); 您需要初始化数组,否则将出现“无法读取未定义的属性“pus

我有一门特工课

export class Agent{
    ID:number;
    Name: string;
}
在组件中,我有一个类数组的变量

public agents : Agent[];
现在我如何在这个变量中推送值?我尝试过以下方法,但没有人奏效

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

您需要初始化数组,否则将出现“无法读取未定义的属性“push”错误。像你那样使用一个简单的对象是很好的(删除道具周围的引号是一个很好的做法),例如

如果您确实想要创建该类的实例,可以这样做:

const agent = new Agent();
agent.ID = 1;
agent.Name = "ABC";
agents.push(agent);

您需要初始化数组,否则将出现“无法读取未定义的属性“push”错误。像你那样使用一个简单的对象是很好的(删除道具周围的引号是一个很好的做法),例如

如果您确实想要创建该类的实例,可以这样做:

const agent = new Agent();
agent.ID = 1;
agent.Name = "ABC";
agents.push(agent);

我认为,仅仅是改变:

公共代理:代理[]
公共代理:代理[]
=[]

和(如果仍在同一组件中且在方法中):

agents.push({“ID”:1,“Name”:“Abc”})
这个。
代理。推送({“ID”:1,“Name”:“Abc”})


更新:

如果您使用相同的方法:

someMethod(){
  let localAgents :Agent[]= []; 
  localAgents.push({ID:1,Name:"Abc"});
}
如果您想在声明时推送,这是无法做到的,您只需使用默认数据初始化,为什么要推送

例如

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

我认为,仅仅是改变:

公共代理:代理[]
公共代理:代理[]
=[]

和(如果仍在同一组件中且在方法中):

agents.push({“ID”:1,“Name”:“Abc”})
这个。
代理。推送({“ID”:1,“Name”:“Abc”})


更新:

如果您使用相同的方法:

someMethod(){
  let localAgents :Agent[]= []; 
  localAgents.push({ID:1,Name:"Abc"});
}
如果您想在声明时推送,这是无法做到的,您只需使用默认数据初始化,为什么要推送

例如

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

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

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将无法检测到更改

希望这有帮助

首先,您的类需要一个构造函数,以便使用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)]
}
  • 请记住,如果要显示代理的内容,必须通过引用更改数组。否则,angular将无法检测到更改


希望这有帮助

不工作。在使用哪种方法时,面对“后续属性声明必须具有相同类型”的问题?对于两种方法都不起作用的情况,您应该首先初始化阵列。在使用哪种方法时,面对“后续属性声明必须具有相同类型”的问题?对于两种方法都不起作用的情况,您应该首先初始化阵列。面对此问题,“后续属性声明必须具有相同的类型”{“compileOnSave”:false,“compilerOptions”:“{“baseUrl”:“/”,“outDir”:“/dist/out tsc”,“sourceMap”:true,“声明”:false,“downlevelIteration”:true,“experimentalDecorators”:true,“module”:“esnext”,“moduleResolution”::“节点”,“导入器”:true,“目标”:“es2015”,“类型根”:[“节点\模块/@types”],“lib”:[“es2018”,“dom”]},“angularCompilerOptions”:{“fullTemplateTypeCheck”:true,“strictInjectionParameters”:true}请向我们展示如何初始化
代理
数组。公共代理:代理[];//声明变量代理。push({“ID”:1,“Name”:“Abc”});//pushvalues@HunzlaSheikh:这是声明。您在哪里初始化数组,即
代理=[]
?不工作。面临此问题”后续的属性声明必须具有相同的类型“{“compileOnSave”:false,“compilerOptions”:{“baseUrl”:“/”,“outDir”:“/dist/out tsc”,“sourceMap”:true,“declaration”:false,“downlevelIteration”:true,“experimentalDecorators”:true,“module”:“esnext”,“moduleResolution”:“node”ImportPers“:true,“target”:“es2015”,“typeRoots”:[“node_modules/@types”],“lib”:[“es2018”,“dom”]},“angularCompilerOptions”:{“fullTemplateTypeCheck”:true,“strictInjectionParameters”:true}}请告诉我们如何初始化
代理
数组[];//声明变量代理。push({“ID”:1,“Name”:“Abc”});//pushvalues@HunzlaSheikh:这是声明。您在哪里初始化数组,即
代理=[]
?所以您在构造函数中推送值,而我在初始化变量时推送值。这是关键字不能使用。无论如何它在构造函数中工作。@HunzlaSheikh构造函数或任何方法都不重要。如果你想要更具体的答案,请共享你的代码。而且我的答案和你的答案不一样。例如,你不能推入未初始化的数组(就像你那样)导出类传单MapComponent实现OnInit{public agents:Agent[];agents.push({ID:1,名称:“Abc”,纬度:2323,经度:4234});constructor(){}@HunzlaSheikh仍然不能推入未初始化的数组。@HunzlaSheikh,不能执行操作(push,unshift..)除非你被一个方法用大括号包装,否则angular就是这样工作的!所以你在构造函数中推送值,我在初始化变量时推送值。这里有“这个”关键字不能使用。不管它在构造函数中如何工作。@HunzlaSheikh构造函数或任何方法都不重要。如果你想要更具体的答案,请共享你的代码。我的答案和你的答案都是