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;
}
}
그러나 콘솔 프로그램이 오류 오류 형식 오류 : "this.chats은 정의되지 않는다" 에서 :
chatUser2 = this.chats.map((v)=>v.chatUser2);
감사합니다.
이 chatService.getChats()
(관찰 가능)은 완료 될 때까지 기다려야하는 비동기 작업으로, async / await를 사용하여이 문제를 해결하는 한 가지 방법입니다.
async getChats() : Promise<void> {
this.loadingChats = true;
this.chats = await this.chatService.getChats().toPromise();
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(): void {
this.loadingChats = true;
this.chatService.getChats().subscribe((data: any[]) => {
this.chats = data;
// ....
});
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다