Я пытаюсь создать службу WebSocket в угловом 2. Здесь то, что я до сих пор:WebSocket обратного вызова в функции стрелки не устанавливая «это» лексический
import {Injectable} from "angular2/core"
@Injectable()
export class ServerService {
public ws:WebSocket;
public myData = {};
constructor() {
let ws = new WebSocket('ws://localhost:8080/');
ws.onopen = (event:Event) => {
console.log("Socket has been opened!");
};
ws.onmessage = (event:Event) => {
this.myData = JSON.parse(event.data);
};
};
}
Проблема заключается в том, когда onmessage
прогонов this
ключевое слово становится объектом WebSocket, а не моим объектом ServerService
.
Кажется, что функция стрелки действует как стандартная функция. Что может быть причиной этого? Есть ли другой способ вернуться к объекту ServerService
?
Ваш код хорошо, 'this' будет указывать на ServerService. [проверить консоль на этом plunk] (http://plnkr.co/edit/xdnX78BbQvHItVQJpUYL?p=preview) – Abdulrahman
Я думаю, что вы назначаете «event.data», который имеет тип «объект WebSocket», возможно, это причина, попробуйте использовать консоль перед назначением значения в методе 'onmessage' –
, как вы скажете, что это ключевое слово this является объектом веб-сокета? –