Angular 6: переменная не определена в сервисе после вызова из другого компонента - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть 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;
}
}
...