Javascript 向阵列添加新对象

Javascript 向阵列添加新对象,javascript,angular,ionic-framework,ionic3,Javascript,Angular,Ionic Framework,Ionic3,我试图在API调用后将JSON对象放入数组 首先我进行了API调用,然后我尝试将每个用户添加到一个格式化的JSON对象中 connectionProvider.ts import { UserModelProvider } from './../user-model/user-model'; import { MSAdal, AuthenticationContext, AuthenticationResult } from '@ionic-native/ms-adal'; export cl

我试图在API调用后将JSON对象放入数组

首先我进行了API调用,然后我尝试将每个用户添加到一个格式化的JSON对象中

connectionProvider.ts

import { UserModelProvider } from './../user-model/user-model';
import { MSAdal, AuthenticationContext, AuthenticationResult } from '@ionic-native/ms-adal';

export class MsConnectionProvider {
  userInfo : UserModelProvider;
  users: UserModelProvider[];

 constructor(...) {}

getUserInfo(){
    let header = new Headers({
      Authorization: this.accessToken;
    });
    let options = new RequestOptions({headers: header});

    this.usersSubscription = this.http.get("https://graph.microsoft.com/v1.0/groups/**ID**/members", options).map(res => res.json()['value']);
    this.usersSubscription.subscribe(res => {
      for (let user of res){
        this.addUserInfo(user.displayName, user.jobTitle, "something", user.mail);
      }
    });
  }

 addUserInfo(name, job, departement, mail){
    this.userInfo = new UserModelProvider;

    this.userInfo.name = name;
    this.userInfo.job = job;
    this.userInfo.departement = departement;
    this.userInfo.mail = mail;

    this.users.push(this.userInfo);
  }
}
export class UserModelProvider {
  name: string;
  job: string;
  departement: string;
  mail: string;
  photo: any;
}
userModelProvider.ts

import { UserModelProvider } from './../user-model/user-model';
import { MSAdal, AuthenticationContext, AuthenticationResult } from '@ionic-native/ms-adal';

export class MsConnectionProvider {
  userInfo : UserModelProvider;
  users: UserModelProvider[];

 constructor(...) {}

getUserInfo(){
    let header = new Headers({
      Authorization: this.accessToken;
    });
    let options = new RequestOptions({headers: header});

    this.usersSubscription = this.http.get("https://graph.microsoft.com/v1.0/groups/**ID**/members", options).map(res => res.json()['value']);
    this.usersSubscription.subscribe(res => {
      for (let user of res){
        this.addUserInfo(user.displayName, user.jobTitle, "something", user.mail);
      }
    });
  }

 addUserInfo(name, job, departement, mail){
    this.userInfo = new UserModelProvider;

    this.userInfo.name = name;
    this.userInfo.job = job;
    this.userInfo.departement = departement;
    this.userInfo.mail = mail;

    this.users.push(this.userInfo);
  }
}
export class UserModelProvider {
  name: string;
  job: string;
  departement: string;
  mail: string;
  photo: any;
}
问题是,当我尝试将“this.userInfo=newusermodelprovider”推入函数块的this.users数组时,什么也没有发生

我当然不懂这门课,你能帮我吗


谢谢。

在赋值之前创建类的实例

this.userInfo = new UserModelProvider();

无法推送到尚未初始化的数组

您需要更改:

users: UserModelProvider[]
致:

此外(可能有帮助,也可能没有帮助):

可能什么也没有发生,因为推送会使阵列发生变异,因此角度变化检测可能不会起作用

不使用推送,而是使用以下内容创建新阵列:

this.users = [...this.users, this.userInfo]
或在ES5中:

this.users = this.users.concat([this.userInfo])

使用
newusermodelprovider()这是正确的,但您的代码还有其他问题,请参阅我的更新答案谢谢!问题是用户的声明。现在,它与push方法完美结合。