Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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 Typescript将字符串转换为对象错误_Angular_Typescript - Fatal编程技术网

Angular Typescript将字符串转换为对象错误

Angular Typescript将字符串转换为对象错误,angular,typescript,Angular,Typescript,当我将响应json从websocket服务器转换为ts对象时,我遇到了一个基本问题,但是我找不到错误在哪里。。。 你能帮我修一下吗 以下是websocket服务器: const wsServer: Server = new Server({port: WEBSOCKET_PORT}); console.log('WebSocket server is listening on port 8085'); export class PushData { constructor(public p

当我将响应json从websocket服务器转换为ts对象时,我遇到了一个基本问题,但是我找不到错误在哪里。。。 你能帮我修一下吗

以下是websocket服务器:

const wsServer: Server = new Server({port: WEBSOCKET_PORT});

console.log('WebSocket server is listening on port 8085');
export class PushData {
  constructor(public push: string,
              public workflowId: number) {
  }
}

wsServer.on('connection', (websocket, req) => {
  websocket.send('This message was pushed by WebSocket server');
  websocket.send('Data pushed by server: ');
  websocket.on('message', (message) => {
    console.log('Server received : %s', message);
    const todaysDate = new Date();
    // websocket.send('Data pushed by server: ' + todaysDate.toString());
    const request1 = new PushData('data', 30);
    websocket.send(JSON.stringify(request1));
   }
}
这是客户 班级服务:

private faceSubject = new BehaviorSubject<any>(null);
createObservableSocket(url: string): Observable<string> {
  this.ws = new WebSocket(url);
  return new Observable(
    observer => {
      this.ws.onmessage = (event) => observer.next(event.data);
      this.ws.onerror = (event) => observer.error(event);
      this.ws.onclose = (event) => observer.complete();
    }
  );
}
这里我总是得到te data.push=未定义。 您能告诉我如何将websocket响应转换为object吗?

编辑: 当服务器从客户端接收到消息时,它只会推送一个PushData对象,但它会在连接时向客户端发送两个字符串。这就是为什么要获取data.push是未定义的,因为数据只是字符串

websocket.send('This message was pushed by WebSocket server');  
websocket.send('Data pushed by server: ');

您需要从客户端发出消息才能接收pushData对象

问题是什么还不清楚。什么是console.log'receivedtatafromserver',data?好的,谢谢,我更新了我的答案,我认为这是一种特殊的依赖注入语法。我学到了一个新东西,非常感谢!很高兴这有帮助。是的,它广泛用于角度DI,但它是TS特性。我想你对问题的原因是正确的。在这种情况下,你能告诉我如何将字符串转换为object吗?我曾尝试使用数据强制转换,但它不起作用;我还试图使用JSON.parsedata创建一个对象,但我得到了一个错误:JSON中的意外标记t位于位置0。
export class PushData {
  constructor(public push: string, public workflowId: number) {}
}
websocket.send('This message was pushed by WebSocket server');  
websocket.send('Data pushed by server: ');