javascript - 将新对象添加到数组角度
问题描述
我试图在 API 调用后将 JSON 对象放入数组中。
首先,我进行了 API 调用,然后尝试将每个用户添加到格式化的 JSON 对象中。
连接提供者.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 数组功能块时,没有任何反应。
我当然不明白这门课,你能帮帮我吗?
谢谢你。
解决方案
您不能推送到尚未初始化的数组。
你需要改变:
users: UserModelProvider[]
到:
users: UserModelProvider[] = [];
另外(可能有帮助,也可能没有帮助):
可能什么都没有发生,因为 push 会改变数组,因此角度变化检测可能不会起作用。
不要使用推送,而是使用以下命令创建一个新数组:
this.users = [...this.users, this.userInfo]
或者在 ES5 中:
this.users = this.users.concat([this.userInfo])
推荐阅读
- python - 具有相对而不是绝对比率的随机欠采样
- c# - C# 中数组的反序列化不支持 JSON 类型
- kubernetes - Istio 路由端口规范
- reactjs - 带反应的自动计数器
- javascript - 刷新反应子页面时找不到页面消失
- java - Json Jackson 在没有设置器的情况下反序列化对象
- python-3.x - 添加两位数并在没有 IF 和 While 的情况下找到它们的进位
- r - 用分组值替换列中的 NA
- java - 如何构建还包含源文件的可执行 uber-jar?
- c++ - sizeof(size_t) 和 sizeof(ptrdiff_t) 什么时候可以不同?