Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.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
Angular 8:全局变量this.chats未定义_Angular_Typescript - Fatal编程技术网

Angular 8:全局变量this.chats未定义

Angular 8:全局变量this.chats未定义,angular,typescript,Angular,Typescript,我有一个叫做聊天的模型,它是这样的: export class Chat { chatId?: number; chatUser1?: string; chatUser2?: string; chatStatus?: string; created_at?: any; updated_at?: any; deleted_at?: any; } 在commponent中,我希望找到具有特定值的chatUser2,因此,我为该模型声明了一个名为chats的数组,如下所示 chats:Chat[];

我有一个叫做聊天的模型,它是这样的:

export class Chat {
chatId?: number;
chatUser1?: string;
chatUser2?: string;
chatStatus?: string;
created_at?: any;
updated_at?: any;
deleted_at?: any;
}

在commponent中,我希望找到具有特定值的chatUser2,因此,我为该模型声明了一个名为chats的数组,如下所示

chats:Chat[];
然后,我得到了这个函数:

getChats(): void { 
this.loadingChats = true;

this.chatService.getChats().subscribe((data: any[]) => {
  this.chats = data;
});

this.toCall=true;
this.toAnswer=false;
this.toHangUp=false;
var status="true";

var chatUser2 = [];
var chatStatus = [];
var chatChannel = [];

chatUser2 = this.chats.map((v)=>v.chatUser2);
chatStatus = this.chats.map((v)=>v.chatStatus);
chatChannel = this.chats.map((v)=>v.chatId.toString());

var size = chatUser2.length;



for(var i=0; i<size ; i++) 
{
  console.log(i.toString());
  if(chatUser2[i] === this.userName && chatStatus[i]===status) 
  {
    this.toAnswer=true; 
    this.toCall=false;
    this.toHangUp=false;
    this.channel=chatChannel[i]; 
    console.log("break");
    break;
  }
}

非常感谢。

聊天服务。getChats()
(可观察)是一个异步操作,您需要等待它完成,使用async/wait解决此问题的一种方法

async getChats():Promise{
this.loadingChats=true;
this.chats=等待这个.chatService.getChats().toPromise();
toCall=true;
这个。toAnswer=false;
这个.toHangUp=false;
var status=“true”;
var chatUser2=[];
var chatStatus=[];
var CHATCHATCHANNEL=[];
chatUser2=this.chats.map((v)=>v.chatUser2);
chatStatus=this.chats.map((v)=>v.chatStatus);
chatChannel=this.chats.map((v)=>v.chatId.toString();
var size=chatUser2.length;
对于(var i=0;i{
this.chats=数据;
// .... 
});
}

嗨!谢谢你的回答!但是我试过了,发现了这个错误异步函数或方法的返回类型必须是全局承诺类型。我忘记了将方法返回类型从
:void
更新为
:Promise
谢谢,返回类型有效,但错误类型错误:“this.chats未定义”继续。我刚刚阅读了更新的答案。将代码移到subscribe方法的主体中工作了!太多了,先生!!
chatUser2 = this.chats.map((v)=>v.chatUser2);