Эта проблема связана с обратным вызовом next
, когда вы подписываетесь на свою наблюдаемую. Когда вы говорите this.onMessageReceived
, вы передаете ссылку функции onMessageReceived
. Когда вы передаете функцию таким образом, вы теряете this
. Если вы напечатаете this
в onMessageReceived
, вы заметите, что this
- это то, что вы ожидаете.
Теперь есть два решения для этого. Простой способ - просто использовать функцию стрелки в качестве обратного вызова next
в вашей подписке.
const obs = this.websocketService.getObservable();
obs.subscribe(
(receivedMsg) => this.onMessageReceived(receivedMsg),
(err) => console.log(err)
);
Или вы можете выбрать привязку this
к функции onMessageReceived
в конструкторе.
export class UploadExcelFileComponent implements OnInit {
constructor(
private websocketService: UploadWebsocketService,
private toastr: ToastrService,
private dialog: MatDialog
) {
// Bind your this
this.onMessageReceived = this.onMessageReceived.bind(this);
}
}