一个想要访问我的订阅方法中的全局变量的人。角度,可观察,订阅,打字稿

时间:2018-08-16 15:32:32

标签: angular global-variables observable undefined subscribe

我无法通过其他方法访问类型脚本中的全局变量。

由于我已经在此方法中初始化了此“ 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 个答案:

答案 0 :(得分:0)

我认为Angular没有考虑到peerx.on('signal',function(data)。中的更改的问题。您可以尝试使用ngZone https://angular.io/api/core/NgZone#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);
   })
})

答案 1 :(得分:0)

您应按如下所示将函数转换为箭头函数:

""x" "y" "t" "id" "id2""

这是一个箭头功能。箭头函数是ECMAScript 6引入的一种短语法,可以与使用函数表达式的方式类似地使用。换句话说,您经常可以使用它们代替函数(foo){...}之类的表达式。但是它们有一些重要的区别。

例如,他们不绑定自己的值。

请参阅此链接:
What's the meaning of "=>" (an arrow formed from equals & greater than) in JavaScript?