我正在尝试在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);
}
}
userModelProvider.ts
export class UserModelProvider {
name: string;
job: string;
departement: string;
mail: string;
photo: any;
}
问题是当我尝试将“ this.userInfo = new UserModelProvider”推送到功能块的this.users数组中时,什么也没发生。
我当然听不懂课,您能帮我吗?
谢谢。
答案 0 :(得分:3)
在分配值之前创建该类的实例,
this.userInfo = new UserModelProvider();
答案 1 :(得分:2)
您不能推送到尚未初始化的阵列。
您需要更改:
users: UserModelProvider[]
收件人:
users: UserModelProvider[] = [];
(可能会或可能不会有帮助):
可能什么也没发生,因为push会使数组发生突变,因此角度变化检测可能不会起作用。
代替使用push,而是使用以下命令创建一个新数组:
this.users = [...this.users, this.userInfo]
或在ES5中:
this.users = this.users.concat([this.userInfo])