初始化为oninit的未定义数组

时间:2019-03-14 10:30:08

标签: angular

我有以下代码段:

usersTempList=[];

ngOnInit() {
  this.obj = {user: JSON.parse(localStorage.userDetails),room:"Sala" + this.projectID, projectID: this.projectID};
  this.loggedUser = JSON.parse(localStorage.userDetails).UserID;
  this.roomList.push(this.obj.room);
  this.usersTempList=[];
  console.log("Initialized array")
  this.join(this.obj);
  ...
}

join(obj: any){
    this.socket.emit("join",obj,this.getOnline);
}

getOnline(err,msg){
  console.log(this.usersTempList);
  console.log("Printed array");
  this.usersTempList = JSON.parse(JSON.stringify(msg));
  console.log("qwerty",this.usersTempList);
}

在浏览器中打开该组件,*ngFor都不起作用(它不打印任何内容),console.log第一行的getOnline始终打印undefined 。同样,即使变量在后续行中进行了更新,*ngFor仍然不会更新接口。

有人对此有任何线索吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

问题解决了,它发生了,因为我无法在我的范围内访问数组,所以我使用了一个箭头函数,它起作用了,usersTempList不再是未定义的。。

join(obj: any){
  this.socket.emit("join",obj, (err,msg) => {      
        this.usersTempList=JSON.parse(JSON.stringify(msg))
    });
}

谢谢大家!