Свойство 'receive_messages' не существует для типа '{}' - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь получить данные с сервера узлов с помощью сокета io и отобразить их в угловом интерфейсе в реальном времени.в то время как я пытаюсь присвоить возвращенные данные моей модели, я получаю эту ошибку

ошибка TS2339: свойство 'receive_messages' не существует для типа '{}'.

component.ts

export class AppComponent implements OnInit {
  public received_messages: RecievedMessages = new RecievedMessages();
  public sigle_messages: any;
  constructor(private webSocketService: WebSocketService){}

    ngOnInit() {
    this.webSocketService.listen("All message Event").subscribe( (data) => {
        if(data && data.received_messages){
          this.received_messages = data.received_messages;
        }
    });
   }
}

message.objects.ts

export class RecievedMessages {
  public id: number;
  public coding: string;
  public gateway_id: number;
  public message: string;
  public message_id: string;
  public received_date: string;
  public sent_from: string;
  public sms_port_id: number;
  public created_at: string;
  public updated_at: string;
  constructor() {
    this.id = null;
    this.coding = '';
    this.gateway_id = null;
    this.message = '';
    this.message_id = '';
    this.received_date = '';
    this.sent_from = '';
    this.sms_port_id = null;
    this.created_at = '';
    this.updated_at = '';
  }
}

web-socket-service.ts

  socket:any;
  // readonly  url: string = "ws://localhost:3000";
  readonly  url: string = "http://0e0d9f8c.ngrok.io";
  constructor() {
    this.socket = io(this.url);
  }


  listen(eventName: string) {

    return new Observable((subscriber => {
          this.socket.on(eventName, (data) =>{
           // subscriber.next(JSON.parse(data));
           subscriber.next(JSON.parse(data));
          });
    }));
  }

error TS2339: Property 'received_messages' does not exist on type '{}'.

1 Ответ

0 голосов
/ 05 июня 2019

Вы должны установить тип в observable, чтобы компилятор знал, какой тип будет испущен, по умолчанию это тип объекта ({}), поэтому у него нет свойства recceive_message, добавьте это

  listen(eventName: string) {

    return new Observable<RecievedMessages>((subscriber => {
          this.socket.on(eventName, (data) =>{
           // subscriber.next(JSON.parse(data));
           subscriber.next(JSON.parse(data));
          });
    }));
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...