У меня есть 2 компонента входа в систему и компонент обмена сообщениями и 1 служба, называемая службой чата, которая находится в компоненте входа в систему.
Теперь проблема заключается в том, что когда я вызываю chatservice из компонента входа в систему и устанавливаю значение переменной сокета, он обновляет переменную.но после того, как я вызову другой метод (recievetextMessage ()) службы чата из компонента мессенджера, значение переменной сокета не определено.Код ниже.
chatservice
import { Injectable } from "@angular/core";
import * as io from 'socket.io-client';
import { Observable } from 'rxjs/Observable';
Injectable();
export class chatservice {
socket:any; // the variable that i am updating
test :any;
constructor() {
}
socketId = () => {
this.socket = io(''); //updating of variable from login component is here
console.log(this.socket);
let observable = new Observable<{ id: any }>(observer => {
this.socket.on('socketId', (data) => {
observer.next(data);
});
return () => { this.socket.disconnect(); }
});
return observable;
}
sendtextmessage(data) {
this.socket.emit('sendtextMessage', data);
}
recievetextMessage = () => { // called from messenger component
console.log(this.socket); // gives undefined
console.log(this.test);
let observable = new Observable(observer => {
console.log(this.test);
console.log(this.socket);
this.socket.on('recievetextMessage', (data) => {
console.log(data);
observer.next(data);
});
return () => { this.socket.disconnect(); }
});
return observable;
}
}