Желание получить доступ к глобальной переменной в моем методе подписки. Угловой, Наблюдаемый, Подписаться, Машинопись

Я не могу получить доступ к глобальной переменной в сценарии типа в другом методе.

Поскольку я инициализировал эту глобальную переменную "initiatorOffer" в этом методе

peerx.on('signal', function(data)
{

   console.log("1");

   console.log(JSON.stringify(data));

   this.targetpeer = data;

   **this.initiatorOffer = JSON.stringify(data);  // i have initialized there**

   console.log(this.initiatorOffer);


}

но когда я получаю это значение в другом методе в том же файле, который:

this._chatservice.clientconnected().subscribe(data => {

   **console.log(this.initiatorOffer);** // getting value

})

я получаю неопределенное значение. это почему? поскольку эта переменная является глобальной.

this.chatservice.clientconnected() Метод вызывается, когда я получаю ответ от сервера.

2 ответа

Я думаю, что проблема в том, что Angular не учитывает изменения в вашем peerx.on('signal', function(data). Вы можете попробовать использовать ngZone https://angular.io/api/core/NgZone

peerx.on('signal', function(data)
{
   this.ngZone.run(() => {
      console.log("1");
      console.log(JSON.stringify(data));
      this.targetpeer = data;
      this.initiatorOffer = JSON.stringify(data);  // i have initialized there**
      console.log(this.initiatorOffer);
   })
})

Вы должны преобразовать функцию в функцию стрелки следующим образом:

peerx.on('signal', (data) => {
....
// here you can access 'this' instance
});

Это функция стрелки. Функции со стрелками - это короткий синтаксис, введенный в ECMAScript 6, который можно использовать аналогично тому, как вы использовали бы выражения функций. Другими словами, вы часто можете использовать их вместо выражений, таких как function (foo) {...}. Но у них есть некоторые важные различия.

Например, они не связывают свои собственные значения этого.

Обратитесь к этой ссылке:
Что означает "=>" (стрелка, образованная из равно и больше, чем) в JavaScript?

Другие вопросы по тегам